It’s very difficult to read Volume II of the Mueller report, which details the special counsel’s obstruction of justice probe, and come away with any other conclusion than that President Donald Trump engaged in an extensive effort to impede the Russia investigation.

Trump fired the FBI director, tried repeatedly to push out other Justice Department officials, tried to shut down the Russia and Michael Flynn probes, praised witnesses who didn’t cooperate with Mueller, and attacked a loyalist who did.

But Mueller didn’t say whether all of this amounted to criminal obstruction of justice — and then Attorney General Bill Barr stepped in to proclaim that, in his view, it didn’t, effectively letting Trump off the hook.

In that light, the report’s second volume can be read as a detailed chronicle of how a president can obstruct justice — or at least come very close to doing so — and get away with it.

Mueller often seems to quite heavily imply that certain of Trump’s actions really should qualify as obstruction — Quinta Jurecic of Lawfare has a helpful color-coded analysis of Mueller’s language on all this. But he decided that he wouldn’t say whether it was or wasn’t, in light of Justice Department guidelines preventing the indictment of a sitting president.

Meanwhile, Barr was on record saying certain acts, such as destroying evidence or suborning perjury, would qualify as obstruction of justice if the president committed them. But Trump’s actual conduct, as detailed in the report, made it difficult to straightforwardly pin activity like that on him, for the following reasons.

Trump worked through his lawyers

For two of the potentially obstructive acts Mueller analyzed, he ran into an evidentiary problem: attorney-client privilege.

First, there was Michael Cohen’s false statement to Congress about the Trump Tower Moscow deal — which minimized the seriousness of the project, misrepresented its timeline, and downplayed Trump’s involvement.

Cohen worked extensively with a lawyer for Trump to craft that statement, and Mueller recounts their interactions at length. But Cohen never spoke directly to Trump during that process.

“The President’s conversations with his personal counsel were presumptively protected by attorney-client privilege, and we did not seek to obtain the contents of any such communications,” Mueller writes. This, he continued, “precludes us from assessing what, if any, role the President played.”

Second, there was an incident that occurred when Michael Flynn withdrew from his joint defense agreement with Trump’s team in November 2017 and kicked off plea deal talks with the special counsel.

A lawyer for Trump (not named in the report) then left a voicemail for Flynn’s lawyer, telling him that if “there’s information that implicates the President,” he wanted “some kind of heads up.” And then in a phone call afterward, Trump’s lawyer told Flynn’s attorney that withdrawing from the joint defense agreement was a sign of hostility toward the president — and he planned to tell his client about that.

Mueller was clearly deeply concerned about this contact, writing that it could have affected “Flynn’s decision to cooperate” and “the extent of that cooperation.” But again, he couldn’t nail down Trump’s role in this ominous message.

“Because of privilege issues,” Mueller writes, “we could not determine whether the President was personally involved in or knew about the specific message his counsel delivered to Flynn’s counsel.”

Trump avoided saying the magic words

One of the most revealing bits in the Mueller report comes in a section about Trump’s battles with his White House counsel, Don McGahn.

The New York Times had reported that, months earlier, Trump had tried to get McGahn to fire Mueller. McGahn refused to dispute this story, saying that was in fact what happened. But Trump was furious, and asserted to McGahn — even behind closed doors — that the story was wrong. His reason? He never used the particular word “fire.”

And, according to McGahn, Trump was right about this particular detail — he really didn’t use the word “fire.” On June 17, 2017, Trump called McGahn twice and said he should call Deputy Attorney General Rod Rosenstein. Trump wanted McGahn to tell Rosenstein that Robert Mueller shouldn’t remain in charge of the Russia investigation because of supposed “conflicts” (like a dispute over fees at a Trump golf course).

Per McGahn, Trump said things like, “You gotta do this,” “You gotta call Rod,” “Mueller has to go,” and “Call me back when you do it.” McGahn interpreted this as a presidential order to fire Mueller (and defied it).

But Trump’s correct insistence that he never used the word “fire” seems to reveal that — in his own mind, at least — he often tries to come up as close as he can to a legal line without crossing it. He uses hints and coded language rather than outright orders to try and preserve his plausible deniability. (Mueller personally didn’t buy this excuse, writing that “the evidence indicates” Trump wanted “to have the Special Counsel removed” — but a more sympathetic attorney general like Bill Barr can seize on ambiguities like this.)

A similar dynamic is at play with Cohen’s false statement to Congress. Trump never told Cohen to “lie” to anyone about the Trump Tower Moscow project. Rather, according to Cohen, he willingly adhered to a “party line” message of minimizing connections between Trump and Russia.

When Trump didn’t trust his attorney general, he got another

Much of the report chronicles Trump’s efforts to pressure his first attorney general, Jeff Sessions, to do various things — to refuse to recuse, to reverse his eventual recusal, to prosecute Hillary Clinton, to curtail the Russia probe, or just to resign.

None of that worked. But then, on November 7, 2018, when Trump finally ousted Sessions. Mueller only mentions this event briefly, without any analysis.

Trump first replaced Sessions with acting Attorney General Matthew Whitaker, but his real masterstroke seems to have been in choosing Bill Barr to fill the role permanently.

Barr had already made it crystal clear in a memo that he was deeply skeptical of Mueller’s obstruction of justice investigation — and that he’d likely set a high standard for viewing a president’s conduct as obstruction. (Per the memo, it would have to entail something like outright telling a witness to give false testimony — which, see above.)

So Trump got someone who he knew would be sympathetic to him on the topic of his greatest legal jeopardy from the Mueller probe put in a supervisory role over that probe. And then, when Mueller chose not to give a prosecutorial recommendation on the matter, Barr had a golden opportunity to do so himself — something another attorney general might have been hesitant to do.

In his public remarks, too, Barr bent over backward to offer a generous interpretation of the report’s findings. “In assessing the president’s actions,” Barr said, “it is important to bear in mind the context.” Trump faced an “unprecedented situation,” with prosecutors scrutinizing his conduct and “relentless speculation in the news media” about his guilt — but “there was in fact no collusion.”

Trump lived with not getting his way a lot of the time

We don’t know whether Trump’s behavior as a whole did end up changing the outcome somewhat. For instance, did his praise of witnesses who don’t “flip” encourage Paul Manafort or Roger Stone to hold out in hopes of pardons?

But we do know that Mueller was not fired or forced to end his investigation. And, as many have observed, the main reason for that is that Trump’s subordinates just kept on refusing to carry out his directives or obey his “suggestions.”

Comey refused to drop the investigation into Flynn, Sessions refused to reverse his recusal or interfere with the probe, McGahn refused to fire Mueller, Reince Priebus refused to push Sessions out in 2017, and Corey Lewandowski didn’t deliver a secret message from Trump to Sessions (telling him to take over the investigation).

All of this insubordination, oddly enough, probably helped protect Trump. Legally, an attempt at obstruction of justice is still a crime, even if it fails. But because Trump’s obstruction didn’t obviously “work,” some in the political world have seized on that as an excuse for not doing anything about it.

Some restraint on Trump’s own part is also involved here. He is the president, and he can fire insubordinate advisers or follow up on orders that aren’t carried out until they are. But he often chose to move on rather than do this.

So there’s clearly a trade-off between the obstruction’s effectiveness and the political jeopardy it can put the president in. After going too far by firing Comey — an action that sent the political system into crisis and prompted Mueller’s appointment — Trump ended up in a zone where he was quite obviously trying to impede the investigation, but never following through.