anchor.diff:      | TType_ucase (_,tinst) -> accFreeInTypesLeftToRight g cxFlag thruFlag acc tinst 
       | TType_fun (d,r) -> accFreeInTypeLeftToRight g cxFlag thruFlag (accFreeInTypeLeftToRight g cxFlag thruFlag acc d ) r
       | TType_var r -> accFreeTyparRefLeftToRight g cxFlag thruFlag acc r 
  -    | TType_forall (tps,r) -> unionFreeTyparsLeftToRight (boundTyparsLeftToRight g cxFlag thruFlag false tps (accFreeInTypeLeftToRight g cxFlag thruFlag emptyFreeTyparsLeftToRight r)) acc
  +    | TType_forall (tps,r) -> unionFreeTyparsLeftToRight (boundTyparsLeftToRight g cxFlag thruFlag tps (accFreeInTypeLeftToRight g cxFlag thruFlag emptyFreeTyparsLeftToRight r)) acc
       | TType_measure unt -> List.foldBack (fun (tp,_) acc -> accFreeTyparRefLeftToRight g cxFlag thruFlag acc tp) (ListMeasureVarOccsWithNonZeroExponents unt) acc
   
   and accFreeInTupInfoLeftToRight _g _cxFlag _thruFlag acc unt = 
  
positive.code: 
  let reduceIteratedFunTy g ty args = 
      List.fold (fun ty _ -> 
          if not (isFunTy g ty) then failwith "reduceIteratedFunTy";
          snd (destFunTy g ty)) ty args
  
  let applyTyArgs g functy tyargs = 
  
negative.code: let emptyFreeTyparsLeftToRight = []
  let unionFreeTyparsLeftToRight fvs1 fvs2 = ListSet.unionFavourRight typarEq fvs1 fvs2
  
  let rec boundTyparsLeftToRight g cxFlag thruFlag  acc tps = 
      // Bound type vars form a recursively-referential set due to constraints, e.g.  A : I<B>, B : I<A> 
      // So collect up free vars in all constraints first, then bind all variables 
      List.fold (fun acc (tp:Typar) -> accFreeInTyparConstraintsLeftToRight g cxFlag thruFlag acc tp.Constraints) tps acc
  
  and accFreeInTyparConstraintsLeftToRight g cxFlag thruFlag acc cxs =
      List.fold (accFreeInTyparConstraintLeftToRight g cxFlag thruFlag) acc cxs 
  