anchor.diff:          lambda.function,
           ParameterInfo.fromLocalFunction(functionNode),
           "closure wrapper at ${functionNode.location}");
  +    return _pushClosure(closure, () => _pushContext(functionNode));
  +  }
  +
  +  w.StructType _pushClosure(ClosureImplementation closure, void pushContext()) {
       w.StructType struct = closure.representation.closureStruct;
   
       ClassInfo info = translator.classInfo[translator.functionClass]!;
  
positive.code: 
      b.i32_const(info.classId);
      b.i32_const(initialIdentityHash);
      _pushContext(functionNode);
      b.global_get(closure.vtable);
      b.struct_new(struct);
  
  
negative.code:       SuperPropertyGet node, w.ValueType expectedType) {
      Member target = _lookupSuperTarget(node.interfaceTarget, setter: false);
      if (target is Procedure && !target.isGetter) {
        // Super tear-off
        w.StructType closureStruct = _pushClosure(
            translator.getTearOffClosure(target),
            () => visitThis(w.RefType.data(nullable: false)));
        return w.RefType.def(closureStruct, nullable: false);
      }
      return _directGet(target, ThisExpression(), () => null);
    }
  