anchor.diff:                 | (tyconDefCore,_), Some tycon -> 
                   let (MutRecDefnsPass1DataForTycon(synTyconInfo,_,_,_,_,_)) = tyconDefCore
                   let (ComponentInfo(_,_, synTyconConstraints,_,_,_, _,_)) = synTyconInfo
  -                let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) envForDecls
  +                let envForTycon = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) envForDecls
                   let thisTyconRef = mkLocalTyconRef tycon
  -                let envinner = MakeInnerEnvForTyconRef cenv envinner thisTyconRef false 
  -                try TcTyparConstraints cenv NoNewTypars checkCxs ItemOccurence.UseInType envinner tpenv  synTyconConstraints |> ignore
  +                let envForTycon = MakeInnerEnvForTyconRef cenv envForTycon thisTyconRef false 
  +                try TcTyparConstraints cenv NoNewTypars checkCxs ItemOccurence.UseInType envForTycon tpenv  synTyconConstraints |> ignore
                   with e -> errorRecovery e m
                  | _ -> ())
   
  
positive.code:         // Now do the representations. Each baseValOpt is a residue from the representation which is potentially available when
          // checking the members.
          let withBaseValsAndSafeInitInfos = 
              (envMutRec,withAttrs) ||> MutRecShapes.mapTyconsWithEnv (fun envinner (origInfo,tyconAndAttrsOpt) -> 
                  let info = 
                      match origInfo, tyconAndAttrsOpt with 
                      | (tyconDefnCore,_), Some (tycon,attrs) -> TcTyconDefnCore_Phase6_EstablishRepresentation cenv envinner tpenv inSig tyconDefnCore tycon attrs
                      | _ -> None, NoSafeInitInfo 
                  (origInfo, Option.map fst tyconAndAttrsOpt, info))
                  
  
negative.code:                 else 
                      None)
  
          // PassA: create member prelimRecValues for "recursive" items, i.e. ctor val and member vals 
          // PassA: also processes their arg patterns - collecting type assertions 
          let (envMutRec, defnsAs, uncheckedRecBinds, tpenv) =  TcMutRecBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns cenv scopem tpenv (envMutRec, mutRecDecls)
  
          // PassB: type check pass, convert from ast to tast and collects type assertions, and generalize
          let defnsBs, generalizedRecBinds, tpenv = TcMutRecBindings_PassB_TypeCheckAndIncrementalGeneralization cenv tpenv envInitial (envMutRec, defnsAs, uncheckedRecBinds, scopem)
  
  
          let generalizedTyparsForRecursiveBlock = 
  