anchor.diff:    }
   }
   
  -/**
  - * A node that represents a directive.
  - *
  - *    directive ::=
  - *        [ExportDirective]
  - *      | [ImportDirective]
  - *      | [LibraryDirective]
  - *      | [PartDirective]
  - *      | [PartOfDirective]
  - */
  +/// A node that represents a directive.
  +///
  +///    directive ::=
  +///        [ExportDirective]
  +///      | [ImportDirective]
  +///      | [LibraryDirective]
  +///      | [PartDirective]
  +///      | [PartOfDirective]
   abstract class DirectiveImpl extends AnnotatedNodeImpl implements Directive {
  -  /**
  -   * The element associated with this directive, or `null` if the AST structure
  -   * has not been resolved or if this directive could not be resolved.
  -   */
  +  /// The element associated with this directive, or `null` if the AST structure
  +  /// has not been resolved or if this directive could not be resolved.
     Element _element;
   
  -  /**
  -   * Initialize a newly create directive. Either or both of the [comment] and
  -   * [metadata] can be `null` if the directive does not have the corresponding
  -   * attribute.
  -   */
  +  /// Initialize a newly create directive. Either or both of the [comment] and
  +  /// [metadata] can be `null` if the directive does not have the corresponding
  +  /// attribute.
     DirectiveImpl(CommentImpl comment, List<Annotation> metadata)
         : super(comment, metadata);
   
     @override
     Element get element => _element;
   
  -  /**
  -   * Set the element associated with this directive to be the given [element].
  -   */
  +  /// Set the element associated with this directive to be the given [element].
     void set element(Element element) {
       _element = element;
     }
   }
   
  -/**
  - * A do statement.
  - *
  - *    doStatement ::=
  - *        'do' [Statement] 'while' '(' [Expression] ')' ';'
  - */
  +/// A do statement.
  +///
  +///    doStatement ::=
  +///        'do' [Statement] 'while' '(' [Expression] ')' ';'
   class DoStatementImpl extends StatementImpl implements DoStatement {
  -  /**
  -   * The token representing the 'do' keyword.
  -   */
  +  /// The token representing the 'do' keyword.
     @override
     Token doKeyword;
   
  -  /**
  -   * The body of the loop.
  -   */
  +  /// The body of the loop.
     StatementImpl _body;
   
  -  /**
  -   * The token representing the 'while' keyword.
  -   */
  +  /// The token representing the 'while' keyword.
     @override
     Token whileKeyword;
   
  -  /**
  -   * The left parenthesis.
  -   */
  +  /// The left parenthesis.
     Token leftParenthesis;
   
  -  /**
  -   * The condition that determines when the loop will terminate.
  -   */
  +  /// The condition that determines when the loop will terminate.
     ExpressionImpl _condition;
   
  -  /**
  -   * The right parenthesis.
  -   */
  +  /// The right parenthesis.
     @override
     Token rightParenthesis;
   
  -  /**
  -   * The semicolon terminating the statement.
  -   */
  +  /// The semicolon terminating the statement.
     @override
     Token semicolon;
   
  -  /**
  -   * Initialize a newly created do loop.
  -   */
  +  /// Initialize a newly created do loop.
     DoStatementImpl(
         this.doKeyword,
         StatementImpl body,
  
positive.code:   }
  }
  
  /**
   * A formal parameter that is required (is not optional).
   *
   *    normalFormalParameter ::=
   *        [FunctionTypedFormalParameter]
   *      | [FieldFormalParameter]
   *      | [SimpleFormalParameter]
   */
  abstract class NormalFormalParameterImpl extends FormalParameterImpl
      implements NormalFormalParameter {
    /**
     * The documentation comment associated with this parameter, or `null` if this
     * parameter does not have a documentation comment associated with it.
     */
    CommentImpl _comment;
  
    /**
     * The annotations associated with this parameter.
     */
    NodeList<Annotation> _metadata;
  
    /**
     * The 'covariant' keyword, or `null` if the keyword was not used.
     */
    Token covariantKeyword;
  
    /**
     * The name of the parameter being declared.
     */
    SimpleIdentifierImpl _identifier;
  
    /**
     * Initialize a newly created formal parameter. Either or both of the
     * [comment] and [metadata] can be `null` if the parameter does not have the
     * corresponding attribute.
     */
    NormalFormalParameterImpl(CommentImpl comment, List<Annotation> metadata,
        this.covariantKeyword, SimpleIdentifierImpl identifier) {
      _comment = _becomeParentOf(comment);
  
negative.code:   }
  }
  
  /// A library directive.
  ///
  ///    libraryDirective ::=
  ///        [Annotation] 'library' [Identifier] ';'
  class LibraryDirectiveImpl extends DirectiveImpl implements LibraryDirective {
    /// The token representing the 'library' keyword.
    @override
    Token libraryKeyword;
  
    /// The name of the library being defined.
    LibraryIdentifierImpl _name;
  
    /// The semicolon terminating the directive.
    @override
    Token semicolon;
  
    /// Initialize a newly created library directive. Either or both of the
    /// [comment] and [metadata] can be `null` if the directive does not have the
    /// corresponding attribute.
    LibraryDirectiveImpl(CommentImpl comment, List<Annotation> metadata,
        this.libraryKeyword, LibraryIdentifierImpl name, this.semicolon)
        : super(comment, metadata) {
  