anchor.diff:        if (insideClosure) {
           declareLocal(element);
         }
  -      
  +
         if (currentFunctionElement.isFactoryConstructor()) {
           // Declare the type parameters in the scope. Generative
           // constructors just use 'this'.
  
positive.code:       useLocal(closureData.thisElement);
      } else if (node.isSuperCall) {
        useLocal(closureData.thisElement);
      } else if (node.isOperator
                 && node.argumentsNode is Prefix
                 && node.selector.source.stringValue == '?') {
        Element parameter = elements[node.receiver];
        FunctionElement enclosing = parameter.enclosingElement;
        FunctionExpression function = enclosing.parseNode(compiler);
  
negative.code:       }
      }
  
      if (outermostFunctionElement.isInstanceMember()
          || outermostFunctionElement.isGenerativeConstructor()) {
        if (hasTypeVariable(type)) useLocal(closureData.thisElement);
      } else if (outermostFunctionElement.isFactoryConstructor()) {
  