anchor.diff:      return astFactory.constructorName(type, period, name);
     }
   
  -  /**
  -   * Parse a continue statement. Return the continue statement that was parsed.
  -   *
  -   * This method assumes that the current token matches `Keyword.CONTINUE`.
  -   *
  -   *     continueStatement ::=
  -   *         'continue' identifier? ';'
  -   */
  +  /// Parse a continue statement. Return the continue statement that was parsed.
  +  ///
  +  /// This method assumes that the current token matches `Keyword.CONTINUE`.
  +  ///
  +  ///     continueStatement ::=
  +  ///         'continue' identifier? ';'
     Statement parseContinueStatement() {
       Token continueKeyword = getAndAdvance();
       if (!_inLoop && !_inSwitch) {
  
positive.code:         commentAndMetadata?.metadata, keyword, type, variables);
    }
  
    /**
     * Parse a variable declaration statement. The [commentAndMetadata] is the
     * metadata to be associated with the variable declaration statement, or
     * `null` if there is no attempt at parsing the comment and metadata. Return
     * the variable declaration statement that was parsed.
     *
     *     variableDeclarationStatement ::=
     *         variableDeclarationList ';'
     */
    VariableDeclarationStatement parseVariableDeclarationStatementAfterMetadata(
        CommentAndMetadata commentAndMetadata) {
      //    Token startToken = currentToken;
  
negative.code:     return tokens.isEmpty ? null : tokens;
    }
  
    /// Parse a do statement. Return the do statement that was parsed.
    ///
    /// This method assumes that the current token matches `Keyword.DO`.
    ///
    ///     doStatement ::=
    ///         'do' statement 'while' '(' expression ')' ';'
    Statement parseDoStatement() {
      bool wasInLoop = _inLoop;
      _inLoop = true;
  