anchor.diff:    class Object {}
     class Function {}
     abstract class List<E> {
  -    factory List([int length]) => JS('=List', r'new Array(#)', length);
  +    factory List([int length]) {
  +      return JS('JSExtendableArray', r'new Array(#)', length);
  +    }
     }
     abstract class Map<K, V> {}
     class Closure {}
  
positive.code:   AnalysisResult result = analyze(source);
    result.checkNodeHasUnknownType('a');
    result.checkNodeHasUnknownType('b');
    result.checkNodeHasType('c', [result.nullType, result.list]);
    result.checkNodeHasType('d', [result.nullType, result.string]);
    result.checkNodeHasType('e', [result.nullType, result.int]);
    result.checkNodeHasType('f', [result.nullType, result.double]);
  
negative.code: testJsCall() {
    final String source = r"""
      import 'dart:foreign';
      import 'dart:interceptors';
  
      class A {}
      class B extends A {}
  