anchor.diff:      return combinators;
     }
   
  -  /**
  -   * Parse the documentation comment and metadata preceding a declaration. This
  -   * method allows any number of documentation comments to occur before, after
  -   * or between the metadata, but only returns the last (right-most)
  -   * documentation comment that is found. Return the documentation comment and
  -   * metadata that were parsed.
  -   *
  -   *     metadata ::=
  -   *         annotation*
  -   */
  +  /// Parse the documentation comment and metadata preceding a declaration. This
  +  /// method allows any number of documentation comments to occur before, after
  +  /// or between the metadata, but only returns the last (right-most)
  +  /// documentation comment that is found. Return the documentation comment and
  +  /// metadata that were parsed.
  +  ///
  +  ///     metadata ::=
  +  ///         annotation*
     CommentAndMetadata parseCommentAndMetadata() {
       // TODO(brianwilkerson) Consider making the creation of documentation
       // comments be lazy.
  
positive.code:         semicolon);
    }
  
    /**
     * Parse a list of configurations. Return the configurations that were parsed,
     * or `null` if there are no configurations.
     */
    List<Configuration> _parseConfigurations() {
      List<Configuration> configurations = null;
      while (_matchesKeyword(Keyword.IF)) {
  
negative.code:     return astFactory.returnStatement(returnKeyword, expression, semicolon);
    }
  
    /// Parse a setter. The [commentAndMetadata] is the documentation comment and
    /// metadata to be associated with the declaration. The [externalKeyword] is
    /// the 'external' token. The [staticKeyword] is the static keyword, or `null`
    /// if the setter is not static. The [returnType] is the return type that has
    /// already been parsed, or `null` if there was no return type. Return the
    /// setter that was parsed.
    ///
    /// This method assumes that the current token matches `Keyword.SET`.
    ///
    ///     setter ::=
    ///         setterSignature functionBody?
    ///
    ///     setterSignature ::=
    ///         'external'? 'static'? returnType? 'set' identifier formalParameterList
    MethodDeclaration parseSetter(CommentAndMetadata commentAndMetadata,
        Token externalKeyword, Token staticKeyword, TypeAnnotation returnType) {
      Token propertyKeyword = getAndAdvance();
  