anchor.diff:             | MutRecShape.Lets _ -> [elem]
              | MutRecShape.Module (c,d) -> [MutRecShape.Module (c, expandTycons f1 d)])
   
  -   let rec mapFold f1 z xs = 
  -       (z,xs) ||> List.mapFold (fun z x ->
  -           match x with
  -           | MutRecShape.Tycon _ -> let x2,z = f1 z x in x2, z
  -           | MutRecShape.Lets _ -> let x2,z = f1 z x in x2, z
  -           | MutRecShape.Module (c,ds) -> let ds2,z = mapFold f1 z ds in MutRecShape.Module (c, ds2),z)
  -
      let rec mapFoldWithEnv f1 z env xs = 
          (z,xs) ||> List.mapFold (fun z x ->
              match x with
  
positive.code: type RecDefnBindingInfo = RecDefnBindingInfo of ContainerInfo * NewSlotsOK * DeclKind * SynBinding
  
  
  type MutRecSignatureInitialData = MutRecShape<SynTypeDefnSig, unit, SynComponentInfo> list
  type MutRecDefnsInitialData = MutRecShape<SynTypeDefn, RecDefnBindingInfo list, SynComponentInfo> list
  
  type MutRecDefnsPass1DataForTycon = MutRecDefnsPass1DataForTycon of SynComponentInfo * SynTypeDefnSimpleRepr * (SynType * range) list * preEstablishedHasDefaultCtor: bool * hasSelfReferentialCtor: bool 
  type MutRecDefnsPass1Data = MutRecShape<MutRecDefnsPass1DataForTycon * SynMemberDefn list, RecDefnBindingInfo list, SynComponentInfo> list
  
negative.code:                             let valscheme = incrClassCtorLhs.InstanceCtorValScheme
                              let valscheme = ChooseCanonicalValSchemeAfterInference cenv.g denv valscheme scopem
                              AdjustRecType cenv incrClassCtorLhs.InstanceCtorVal valscheme
                              PassCIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt)
  
                          | PassBInherit (inheritsExpr,basevOpt) -> 
                              PassCInherit (inheritsExpr,basevOpt)
  
                          | PassBIncrClassBindings bindRs             -> 
                              PassCIncrClassBindings bindRs
  
                          | PassBIncrClassCtorJustAfterSuperInit -> 
                              PassCIncrClassCtorJustAfterSuperInit
  
                          | PassBIncrClassCtorJustAfterLastLet -> 
                              PassCIncrClassCtorJustAfterLastLet
  
                          | PassBMember idx  ->
                              // PassC: Fixup member bindings 
                              let generalizedBinding = generalizedBindingsMap.[idx] 
                              let vxbind = TcLetrecAdjustMemberForSpecialVals cenv generalizedBinding
                              let pgbrind = FixupLetrecBind cenv denv generalizedTyparsForRecursiveBlock  vxbind
                              PassCMember pgbrind)
                  TyconBindingsPassC(tyconOpt, tcref,defnCs))
  
              // PassC: Fixup let bindings 
              (fun bindIdxs -> 
                      [ for idx in bindIdxs do 
                          let generalizedBinding = generalizedBindingsMap.[idx] 
                          let vxbind = TcLetrecAdjustMemberForSpecialVals cenv generalizedBinding
                          yield FixupLetrecBind cenv denv generalizedTyparsForRecursiveBlock  vxbind ])
  
  
      // --- Extract field bindings from let-bindings 
      // --- Extract method bindings from let-bindings 
      // --- Extract bindings for implicit constructors
      let TcMutRecBindings_ExtractImplicitFieldAndMethodBindings cenv envInitial tpenv (denv, generalizedTyparsForRecursiveBlock, defnsCs: MutRecBindingsPassC) =
  
        //  let (fixupValueExprBinds, methodBinds) = 
              defnsCs |> MutRecShapes.mapTycons (fun (TyconBindingsPassC(tyconOpt, tcref,defnCs)) -> 
  