anchor.diff:    /// ;
     /// ```
     Token parseThrowExpression(Token token, bool allowCascades) {
  -    // TODO(brianwilkerson) Return the last consumed token.
       Token throwToken = token.next;
       assert(optional('throw', throwToken));
       token = allowCascades
  -        ? parseExpression(throwToken.next).next
  -        : parseExpressionWithoutCascade(throwToken).next;
  -    listener.handleThrowExpression(throwToken, token);
  +        ? parseExpression(throwToken.next)
  +        : parseExpressionWithoutCascade(throwToken);
  +    listener.handleThrowExpression(throwToken, token.next);
       return token;
     }
   
  
positive.code: 
      int fieldCount = 1;
      token = parseFieldInitializerOpt(token, name, varFinalOrConst, isTopLevel);
      while (optional(',', token)) {
        name = ensureIdentifier(token.next, context);
        token = parseFieldInitializerOpt(name, name, varFinalOrConst, isTopLevel);
        ++fieldCount;
      }
      token = ensureSemicolon(token);
      if (isTopLevel) {
        listener.endTopLevelFields(fieldCount, start.next, token);
      } else {
  
negative.code:                   .withArguments(name.lexeme));
          }
        }
        listener.handleNoFieldInitializer(token.next);
      }
      return token;
    }
  