anchor.diff:      // For now, do nothing.
     }
   }
  +
  +class MemberInfo {
  +  final FunctionElement member;
  +
  +  final String name;
  +
  +  final FunctionSignature parameters;
  +
  +  final jsAst.Expression code;
  +
  +  final bool needsStubs;
  +
  +  final bool canTearOff;
  +
  +  final bool isClosure;
  +
  +  final String tearOffName;
  +
  +  final bool canBeReflected;
  +
  +  final bool canBeApplied;
  +
  +  final bool needStructuredInfo;
  +
  +  MemberInfo(
  +      this.member,
  +      this.name,
  +      this.parameters,
  +      this.code,
  +      {this.needsStubs,
  +       this.canTearOff,
  +       this.isClosure,
  +       this.tearOffName,
  +       this.canBeReflected,
  +       this.canBeApplied,
  +       this.needStructuredInfo}) {
  +    assert(member != null);
  +    assert(name != null);
  +    assert(parameters != null);
  +    assert(code != null);
  +    assert(needsStubs != null);
  +    assert(canTearOff != null);
  +    assert(isClosure != null);
  +    assert(tearOffName != null || !canTearOff);
  +    assert(canBeReflected != null);
  +    assert(canBeApplied != null);
  +    assert(needStructuredInfo != null);
  +  }
  +}
  
positive.code: 
      final bool needStructuredInfo =
          canTearOff || canBeReflected || canBeApplied;
      if (!needStructuredInfo) {
        compiler.dumpInfoTask.registerElementAst(member,
            builder.addProperty(name, code));
  
negative.code:       return;
      }
  
  
      // This element is needed for reflection or needs additional stubs. So we
      // need to retain additional information.
  