anchor.diff:          // analyze the tokens following the const keyword.
           assert(optional("const", token.next));
           beforeBegin = token;
  -        begin = token.next;
  -        token = listener.injectGenericCommentTypeAssign(begin.next);
  +        token = listener.injectGenericCommentTypeAssign(token.next.next);
  +        // TODO(brianwilkerson): Remove the invocation of `previous` when
  +        // `injectGenericCommentTypeAssign` returns the last consumed token.
  +        begin = beforeToken = token.previous;
  +        // TODO(brianwilkerson): Figure out how to remove the invocation of
  +        // `previous`.
  +        beforeBegin = begin.previous;
           assert(begin.next == token);
         } else {
           // Modify [begin] in case generic type are injected from a comment.
           begin = token = listener.injectGenericCommentTypeAssign(token.next);
           // TODO(brianwilkerson): Remove the invocation of `previous` when
           // `injectGenericCommentTypeAssign` returns the last consumed token.
  -        beforeBegin = begin.previous;
  +        beforeToken = beforeBegin = begin.previous;
         }
   
         if (optional("void", token)) {
           // `void` is a type.
           looksLikeType = true;
  -        voidToken = token;
  +        beforeToken = voidToken = token;
           token = token.next;
         } else if (isValidTypeReference(token) &&
             !isGeneralizedFunctionType(token)) {
           // We're looking at an identifier that could be a type (or `dynamic`).
           looksLikeType = true;
  +        beforeToken = token;
           token = token.next;
           if (optional(".", token) && isValidTypeReference(token.next)) {
             // We're looking at `prefix '.' identifier`.
             context = IdentifierContext.prefixedTypeReference;
  -          token = token.next.next;
  +          beforeToken = token.next;
  +          token = beforeToken.next;
           }
           if (optional("<", token)) {
             Token close = closeBraceTokenFor(token);
  
positive.code:         String value = token.stringValue;
          if ((identical('=', value)) || (identical(':', value))) {
            Token equal = token;
            token = parseExpression(token.next).next;
            listener.handleValuedFormalParameter(equal, token);
            if (isMandatoryFormalParameterKind(parameterKind)) {
              reportRecoverableError(
  
negative.code: 
              // TODO(ahe): Generate type events and call
              // parseVariablesDeclarationRest instead.
              return parseVariablesDeclaration(beforeBegin);
            } else if (OPEN_PAREN_TOKEN == afterIdKind) {
              // We are looking at `type identifier '('`.
              if (looksLikeFunctionBody(closeBraceTokenFor(afterId).next)) {
  