anchor.diff:    /// ;
     /// ```
     Token parseDottedName(Token token) {
  -    listener.beginDottedName(token);
       Token firstIdentifier =
           ensureIdentifier(token, IdentifierContext.dottedName);
  +    listener.beginDottedName(firstIdentifier);
       token = firstIdentifier.next;
       int count = 1;
       while (optional('.', token)) {
  
positive.code:       listener.handleNativeFunctionBodyIgnored(nativeToken, token);
        // Fall through to recover and skip function body
      }
      token = token;
      String value = token.stringValue;
      if (identical(value, ';')) {
        if (!allowAbstract) {
  
negative.code:   }
  
    Token parseNativeClause(Token nativeToken) {
      assert(optional('native', nativeToken));
      Token token = nativeToken.next;
      bool hasName = false;
      if (token.kind == STRING_TOKEN) {
  