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:                     | _ -> None
                  origInfo, res)
              
          // Establish the abbreviations (no constraint checking, because constraints not yet established)
          (envMutRecPrelim, withAttrs) ||>  MutRecShapes.iterTyconsWithEnv (fun envForDecls (origInfo,tyconAndAttrsOpt) -> 
              match origInfo, tyconAndAttrsOpt with 
              | (typeDefCore, _,_), Some (tycon,attrs) -> TcTyconDefnCore_Phase1C_Phase1E_EstablishAbbreviations cenv envForDecls inSig tpenv FirstPass typeDefCore tycon attrs
  
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
  