anchor.diff:    @override
     void defaultNode(ir.Node node) => node.visitChildren(this);
   }
  -
  -class _ClassEnsurer extends BaseDartTypeVisitor<dynamic, Null> {
  -  final KernelImpactBuilder builder;
  -  final DartTypes types;
  -  final seenTypes = new Set<InterfaceType>();
  -
  -  _ClassEnsurer(this.builder, this.types);
  -
  -  void ensureClassesInType(DartType type) {
  -    seenTypes.clear();
  -    type.accept(this, null);
  -  }
  -
  -  @override
  -  visitType(DartType type, _) {}
  -
  -  @override
  -  visitFunctionType(FunctionType type, _) {
  -    type.returnType.accept(this, null);
  -    type.parameterTypes.forEach((t) {
  -      t.accept(this, null);
  -    });
  -    type.optionalParameterTypes.forEach((t) {
  -      t.accept(this, null);
  -    });
  -    type.namedParameterTypes.forEach((t) {
  -      t.accept(this, null);
  -    });
  -  }
  -
  -  @override
  -  visitInterfaceType(InterfaceType type, _) {
  -    if (!seenTypes.add(type)) {
  -      return;
  -    }
  -    builder.impactBuilder.registerSeenClass(type.element);
  -    type.typeArguments.forEach((t) {
  -      t.accept(this, null);
  -    });
  -    var supertype = types.getSupertype(type.element);
  -    supertype?.accept(this, null);
  -  }
  -
  -  @override
  -  visitTypedefType(TypedefType type, _) {
  -    type.typeArguments.forEach((t) {
  -      t.accept(this, null);
  -    });
  -  }
  -}
  
positive.code:     visitNodes(literal.entries);
      DartType keyType = elementMap.getDartType(literal.keyType);
      DartType valueType = elementMap.getDartType(literal.valueType);
      registerSeenClasses(literal.keyType);
      registerSeenClasses(literal.valueType);
      impactBuilder.registerMapLiteral(new MapLiteralUse(
          commonElements.mapType(keyType, valueType),
          isConstant: literal.isConst,
  
negative.code: 
    @override
    void visitVariableDeclaration(ir.VariableDeclaration node) {
      if (node.initializer != null) {
        visitNode(node.initializer);
      } else {
  