anchor.diff:      Token afterModifiers =
           identifiers.isNotEmpty ? identifiers.head.next : beforeStart.next;
       return isField
  -        ? parseFields(beforeStart.next, identifiers.reverse(), type, name, true)
  +        ? parseFields(beforeStart, identifiers.reverse(), type, name, true)
           : parseTopLevelMethod(
  -            beforeStart.next, afterModifiers, type, getOrSet, name);
  +            beforeStart, afterModifiers, type, getOrSet, name);
     }
   
     Token parseFields(Token start, Link<Token> modifiers, Token type, Token name,
         bool isTopLevel) {
  -    // TODO(brianwilkerson) Accept the last consumed token.
       Token varFinalOrConst = null;
       for (Token modifier in modifiers) {
         if (optional("var", modifier) ||
  
positive.code:         break;
        }
      }
      Token token = parseModifiers(start,
          isTopLevel ? MemberKind.TopLevelField : MemberKind.NonStaticField,
          isVarAllowed: true);
  
  
negative.code:     } else {
        // TODO(brianwilkerson): Remove the invocation of `previous` after
        // converting `parseType` to return the last consumed token.
        return parseType(token.next,
                TypeContinuation.ExpressionStatementOrConstDeclaration)
            .previous;
      }
    }
  