anchor.diff:    }
   
     @override
  -  void beginExpression(Token token) {
  -    debugEvent("beginExpression");
  -    isFirstIdentifier = true;
  -  }
  -
  -  @override
     void handleIdentifier(Token token, IdentifierContext context) {
       debugEvent("handleIdentifier");
       String name = token.lexeme;
  -    if (isFirstIdentifier) {
  +    if (context.isScopeReference) {
         assert(!inInitializer ||
             this.scope == enclosingScope ||
             this.scope.parent == enclosingScope);
  
positive.code:     push(new MapEntry(key, value));
    }
  
    @override
    void beginLiteralSymbol(Token token) {
      isFirstIdentifier = false;
    }
  
    String symbolPartToString(name) {
      if (name is Identifier) {
        return name.name;
  
negative.code:       push(name.buildTypesWithBuiltArguments(library, arguments));
      } else if (name is TypeBuilder) {
        push(name.build(library));
      } else if (name is Builder) {
        push(kernelTypeFromBuilder(name, arguments, beginToken.charOffset));
      } else if (name is String) {
        push(kernelTypeFromString(name, arguments, beginToken.charOffset));
      } else {
        internalError("Unhandled: '${name.runtimeType}'.");
      }
      if (peek() is TypeParameterType) {
        TypeParameterType type = peek();
  