anchor.diff:    }
   
     Token parsePartOrPartOf(Token token, DirectiveContext directiveState) {
  -    // TODO(brianwilkerson) Accept the last consumed token.
  -    assert(optional('part', token));
  -    if (optional('of', token.next)) {
  -      directiveState?.checkPartOf(this, token);
  +    Token next = token.next;
  +    assert(optional('part', next));
  +    if (optional('of', next.next)) {
  +      directiveState?.checkPartOf(this, next);
         return parsePartOf(token);
       } else {
  -      directiveState?.checkPart(this, token);
  +      directiveState?.checkPart(this, next);
         return parsePart(token);
       }
     }
  
positive.code:   /// ;
    /// ```
    Token parseLibraryName(Token token) {
      // TODO(brianwilkerson) Accept the last consumed token.
      assert(optional('library', token));
      Token libraryKeyword = token;
      listener.beginLibraryName(libraryKeyword);
      token = parseQualified(token, IdentifierContext.libraryName,
          IdentifierContext.libraryNameContinuation);
      token = ensureSemicolon(token.next);
      listener.endLibraryName(libraryKeyword, token);
  
negative.code:   /// ;
    /// ```
    Token parseImport(Token token) {
      Token importKeyword = token.next;
      assert(optional('import', importKeyword));
      listener.beginImport(importKeyword);
      token = parseLiteralStringOrRecoverExpression(importKeyword);
      Token afterUri = token;
      token = parseConditionalUris(token);
      token = parseImportPrefixOpt(token);
  