anchor.diff:          MutRecDefnsPhase2DataForModule (mtypeAcc, mspec), innerParent
       
   
  +    // Interlude between Phase1D and Phase1E - Check and publish the explicit constraints. 
  +    let TcMutRecDefns_CheckExplicitConstraints cenv tpenv m checkCxs envMutRecPrelim withEnvs = 
  +            (envMutRecPrelim,withEnvs) ||> MutRecShapes.iterTyconsWithEnv (fun envForDecls (origInfo, tyconOpt) -> 
  +               match origInfo, tyconOpt with 
  +               | (typeDefCore,_,_), Some (tycon:Tycon) -> 
  +                let (MutRecDefnsPhase1DataForTycon(synTyconInfo,_,_,_,_,_)) = typeDefCore
  +                let (ComponentInfo(_,_, synTyconConstraints,_,_,_, _,_)) = synTyconInfo
  +                let envForTycon = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) envForDecls
  +                let thisTyconRef = mkLocalTyconRef tycon
  +                let envForTycon = MakeInnerEnvForTyconRef cenv envForTycon thisTyconRef false 
  +                try TcTyparConstraints cenv NoNewTypars checkCxs ItemOccurence.UseInType envForTycon tpenv  synTyconConstraints |> ignore
  +                with e -> errorRecovery e m
  +               | _ -> ())
  +
  +
       let TcMutRecDefns_Phase1 cenv envInitial parent inSig tpenv (typeDefCores:MutRecShape<MutRecDefnsPhase1DataForTycon * 'MemberInfo, 'LetInfo, SynComponentInfo,_> list, m, scopem) =
   
           // Phase1A - build Entity for type definitions, exception definitions and module definitions.
  
positive.code:                 mspec.Data.entity_modul_contents <- notlazy !mtypeAcc)  
  
  
          // Establish the kind of each type constructor 
          // Here we run InferTyconKind and record partial information about the kind of the type constructor. 
          // This means TyconObjModelKind is set, which means isSealedTy, isInterfaceTy etc. give accurate results. 
          let withAttrs = 
  
negative.code:     let SplitMutRecSignatures mutRecSigs = mutRecSigs |> MutRecShapes.mapTycons SplitTyconSignature
  
      let private TcTyconSignatureMemberSpecs cenv envMutRec mutRecDefns =
          // TODO - need to collect the mutually recursive signature declarations when "rec" is used
          // TODO - this is only checking the tycons in the signatures, need to do the module and let elements too
          (envMutRec,mutRecDefns) ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls ((tyconCore, (synTyconInfo,members), innerParent), _, _) -> 
              let tpenv = emptyUnscopedTyparEnv
  