anchor.diff:        if (type == SpecialType.JsObject) {
           return abstractValueDomain
               .createNonNullExact(commonElements.objectClass);
  -      } else if (type is VoidType) {
  -        return abstractValueDomain.nullType;
  -      } else if (closedWorld.dartTypes.isTopType(type)) {
  -        return abstractValueDomain.dynamicType;
  -      } else if (type == commonElements.nullType) {
  -        return abstractValueDomain.nullType;
  -      } else if (type is InterfaceType) {
  -        return abstractValueDomain.createNonNullSubtype(type.element);
  -      } else {
  -        throw 'Unexpected type $type';
         }
  +      if (type is DartType) {
  +        if (type is VoidType) {
  +          return abstractValueDomain.nullType;
  +        }
  +        if (closedWorld.dartTypes.isTopType(type)) {
  +          return abstractValueDomain.dynamicType;
  +        }
  +        if (type == commonElements.nullType) {
  +          return abstractValueDomain.nullType;
  +        }
  +        if (type is InterfaceType) {
  +          return abstractValueDomain.createNonNullSubtype(type.element);
  +        }
  +      }
  +      throw 'Unexpected type $type';
       }
   
       AbstractValue result =
  
positive.code: // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
  // for details. All rights reserved. Use of this source code is governed by a
  // BSD-style license that can be found in the LICENSE file.
  
  // @dart = 2.10
  
  import '../common/elements.dart' show CommonElements;
  import '../elements/entities.dart';
  
negative.code: class AbstractValueFactory {
    static AbstractValue inferredReturnTypeForElement(
        FunctionEntity element, GlobalTypeInferenceResults results) {
      return results.resultOfMember(element).returnType;
    }
  
    static AbstractValue inferredTypeForMember(
        MemberEntity element, GlobalTypeInferenceResults results) {
      return results.resultOfMember(element).type;
    }
  
    static AbstractValue inferredTypeForParameter(
        Local element, GlobalTypeInferenceResults results) {
      return results.resultOfParameter(element);
    }
  
    static AbstractValue inferredResultTypeForSelector(Selector selector,
        AbstractValue receiver, GlobalTypeInferenceResults results) {
      return results.resultTypeOfSelector(selector, receiver);
    }
  
    static AbstractValue fromNativeBehavior(
  