anchor.diff:  
           // No inferred constraints allowed on declared typars 
           (envMutRec,withEnvs) 
  -        ||> MutRecShapes.iterTyconsWithEnv (fun envinner (_, tyconOpt) -> 
  -               tyconOpt |> Option.iter (fun tycon -> tycon.Typars(m) |> List.iter (SetTyparRigid cenv.g envinner.DisplayEnv m)))
  +        ||> MutRecShapes.iterTyconsWithEnv (fun envForDecls (_, tyconOpt) -> 
  +               tyconOpt |> Option.iter (fun tycon -> tycon.Typars(m) |> List.iter (SetTyparRigid cenv.g envForDecls.DisplayEnv m)))
           
           // OK, now recheck the abbreviations, super/interface and explicit constraints types (this time checking constraints)
  -        (envMutRec, withAttrs) ||>  MutRecShapes.iterTyconsWithEnv (fun envinner (origInfo,tyconAndAttrsOpt) -> 
  +        (envMutRec, withAttrs) ||>  MutRecShapes.iterTyconsWithEnv (fun envForDecls (origInfo,tyconAndAttrsOpt) -> 
               match origInfo, tyconAndAttrsOpt with 
  -            | (tyconDefCore, _), Some (tycon,attrs) -> TcTyconDefnCore_Phase2_Phase4_EstablishAbbreviations cenv envinner inSig tpenv SecondPass tyconDefCore tycon attrs
  +            | (tyconDefCore, _), Some (tycon,attrs) -> TcTyconDefnCore_Phase2_Phase4_EstablishAbbreviations cenv envForDecls inSig tpenv SecondPass tyconDefCore tycon attrs
               | _ -> ()) 
   
           (envMutRec, withAttrs) |> TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes cenv tpenv inSig SecondPass 
  
positive.code: 
          let envMutRec, defnsAs =  
              (envMutRec, defnsAs) 
              ||> MutRecShapes.extendEnvs (fun envCurrent decls -> 
                  let prelimRecValues =  
                      decls |> List.collect (function 
                          | MutRecShape.Tycon (TyconBindingsPassA(_,_,prelimRecValues,_,_,_,_)) -> prelimRecValues 
                          | MutRecShape.Lets binds -> [ for bind in binds -> bind.RecBindingInfo.Val ] 
                          | _ -> [])
                  let envInner = AddLocalVals cenv.tcSink scopem prelimRecValues envCurrent
                  envInner)
  
          (envMutRec, defnsAs, uncheckedRecBinds, tpenv)
  
      /// PassB: check each of the bindings, convert from ast to tast and collects type assertions.
      /// Also generalize incrementally.
      let TcMutRecBindings_PassB_TypeCheckAndIncrementalGeneralization cenv tpenv (envMutRec, defnsAs:MutRecBindingsPassA, uncheckedRecBinds: PreCheckingRecursiveBinding list, scopem) : MutRecBindingsPassB * _ * _ =
  
          let (defnsBs: MutRecBindingsPassB), (tpenv, generalizedRecBinds, preGeneralizationRecBinds, _, _) = 
  
  
negative.code:           
  
        let binds  = 
            (envMutRec, mutRecDefns) ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls tyconData -> 
                let (MutRecDefnsPass2DataForTycon(tyconOpt, declKind, tcref, _, _, declaredTyconTypars, _, _, _)) = tyconData
                let obinds = tyconBindingsOfTypeDefn tyconData
                let ibinds  = 
                        let intfTypes = interfacesFromTypeDefn envForDecls tyconData
                        let slotImplSets = DispatchSlotChecking.GetSlotImplSets cenv.infoReader envForDecls.DisplayEnv false (List.map (fun (ity,_,m) -> (ity,m)) intfTypes)
                        (intfTypes, slotImplSets) ||> List.map2 (interfaceMembersFromTypeDefn tyconData) |> List.concat
                MutRecDefnsPass2InfoForTycon(tyconOpt, tcref, declaredTyconTypars, declKind, obinds @ ibinds))
        
  