anchor.diff:      if (node.target.kind != ProcedureKind.Factory) {
         node.arguments.types.clear();
       }
  +    if (node.isConst) pushConstantContext();
       node.transformChildren(this);
  +    if (node.isConst) popConstantContext();
       return node;
     }
   
  
positive.code:     node.transformChildren(this);
      return node;
    }
  }
  
negative.code:       assert(node.enclosingClass.typeParameters.length ==
            node.function.typeParameters.length);
        // Factories can have function type parameters as long as they correspond
        // exactly to those on the enclosing class. However, these type parameters
        // may still not be in a constant.
        for (var parameter in node.function.typeParameters) {
          constantSubstitution[parameter] = const DynamicType();
        }
        // Skip the visitFunctionNode but traverse body.
        node.function.transformChildren(this);
        node.function.typeParameters.forEach(constantSubstitution.remove);
      } else {
        node.transformChildren(this);
      }
  