anchor.diff:        return;
       }
   
  -    if (canTearOff) {
  -      assert(invariant(member, !member.isGenerativeConstructor));
  -      assert(invariant(member, !member.isGenerativeConstructorBody));
  -      assert(invariant(member, !member.isConstructor));
  -    }
   
       // This element is needed for reflection or needs additional stubs. So we
       // need to retain additional information.
  
positive.code: 
      final bool needStructuredInfo =
          canTearOff || canBeReflected || canBeApplied;
      if (!needStructuredInfo) {
        compiler.dumpInfoTask.registerElementAst(member,
            builder.addProperty(name, code));
  
negative.code:   }
  
    void addMemberMethod(FunctionElement member, ClassBuilder builder) {
      MemberInfo info = analyzeMemberMethod(member);
      if (info != null) {
        addMemberMethodFromInfo(info, builder);
      }
    }
  
    MemberInfo analyzeMemberMethod(FunctionElement member) {
      if (member.isAbstract) return null;
      jsAst.Expression code = backend.generatedCode[member];
      if (code == null) return null;
      String name = namer.getNameOfMember(member);
  
      FunctionSignature parameters = member.functionSignature;
      bool needsStubs = !parameters.optionalParameters.isEmpty;
      bool canTearOff = false;
  