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:               for (Field(_,_,_,ty,_,_,_,m)) in fields do 
                    let ty',_ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType env tpenv ty
                    yield (ty',m)
            | _ ->
                () ]
  
  
negative.code: 
          CheckForCyclicAbbreviations tycons
  
          // Phase 1D. Establish the super type and interfaces  (no constraint checking, because constraints not yet established)     
          (envMutRecPrelim, withAttrs) |> TcTyconDefnCore_Phase1D_Phase1F_EstablishSuperTypesAndInterfaceTypes cenv tpenv inSig FirstPass 
  
          // Interlude between Phase1D and Phase1E - Add the interface and member declarations for 
          // hash/compare. Because this adds interfaces, this may let constraints 
          // be satisfied, so we have to do this prior to checking any constraints.
          //
          // First find all the field types in all the structrual types
          let tyconsWithStructuralTypes = 
              (envMutRecPrelim,withEnvs) 
              ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls (origInfo, tyconOpt) -> 
  