anchor.diff:      token = token.next;
       assert(optional('.', token));
       Token period = token;
  -    token = ensureIdentifier(token.next, context);
  +    token = ensureIdentifier(token, context);
       listener.handleQualified(period);
       return token;
     }
  
positive.code:   /// was inserted.
    Token insertSyntheticIdentifier(Token token, IdentifierContext context,
        [String stringValue]) {
      // TODO(brianwilkerson) Accept the last consumed token.
      stringValue ??= '';
      Message message = context.recoveryTemplate.withArguments(token);
      Token identifier = new SyntheticStringToken(
          TokenType.IDENTIFIER, stringValue, token.charOffset, 0);
      // TODO(brianwilkerson): Remove the invocation of `previous` when this
      // method accepts the last consumed token.
      return rewriteAndRecover(token.previous, message, identifier);
    }
  
    /// Parse a simple identifier at the given [token], and return the identifier
  
negative.code:     Token period = null;
      if (optional('.', token.next)) {
        period = token.next;
        token = ensureIdentifier(period,
            IdentifierContext.constructorReferenceContinuationAfterTypeArguments);
      } else {
        listener.handleNoConstructorReferenceContinuationAfterTypeArguments(
  