anchor.diff:      type.typeArguments.forEach((DartType argument) {
         inputs.add(analyzeTypeArgument(argument));
       });
  -    // TODO(15489): Register at codegen.
  -    compiler.enqueuer.codegen.registerInstantiatedType(type, elements);
       return callSetRuntimeTypeInfo(type.element, inputs, newObject);
     }
   
  
positive.code:     for (DartType argument in type.typeArguments) {
        arguments.add(analyzeTypeArgument(argument));
      }
      // TODO(15489): Register at codegen.
      compiler.enqueuer.codegen.registerInstantiatedType(type, elements);
      return callSetRuntimeTypeInfo(type.element, arguments, object);
    }
  
negative.code:               code, backend.nullType, [stack.last], canThrow: true));
        }
      } else if (isGrowableListConstructorCall) {
        js.Expression code = js.js.parseForeignJS('Array()');
        var behavior = new native.NativeBehavior();
        behavior.typesReturned.add(expectedType);
        push(new HForeign(code, elementType, inputs, nativeBehavior: behavior));
      } else {
        ClassElement cls = constructor.getEnclosingClass();
        if (cls.isAbstract && constructor.isGenerativeConstructor()) {
  