anchor.diff:  
   /// Process a sequence of seqeuntials mixed with iterated lets "let ... in let ... in ..." in a tail recursive way 
   /// This avoids stack overflow on really large "let" and "letrec" lists
  -and TcLinearExprs bodyChecker cenv env overallTy tpenv processUseBindings expr cont = 
  +and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr expr cont = 
       match expr with 
  -    | SynExpr.Sequential (sp,true,e1,e2,m) ->
  +    | SynExpr.Sequential (sp,true,e1,e2,m) when not isCompExpr ->
           let e1',_ = TcStmtThatCantBeCtorBody cenv env tpenv e1
           // tailcall
  -        TcLinearExprs bodyChecker cenv env overallTy tpenv processUseBindings e2 (fun (e2',tpenv) -> 
  +        TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr e2 (fun (e2',tpenv) -> 
               cont (Expr.Sequential(e1',e2',NormalSeq,sp,m),tpenv))
   
  -    | SynExpr.LetOrUse (isRec,isUse,binds,body,m) when (not isUse || processUseBindings) ->
  +    | SynExpr.LetOrUse (isRec,isUse,binds,body,m) when not (isUse && isCompExpr) ->
                   
           if isRec then 
               // TcLinearExprs processes at most one recursive binding, this is not tailcalling
  
positive.code:                     (fun ty envinner tpenv e -> tcSequenceExprBody envinner ty tpenv e) 
                      cenv env overallTy 
                      tpenv 
                      false(* don't consume 'use' bindings*)
                      comp 
                      (fun x -> x)  |> Some
  
  
negative.code:                     (mkCoerceExpr(expr,genEnumTy,expr.Range,exprty))),tpenv
  
      | SynExpr.LetOrUse _ ->
          TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false expr (fun x -> x) 
  
      | SynExpr.TryWith (e1,_mTryToWith,clauses,mWithToLast,mTryToLast,spTry,spWith) ->
          let e1',tpenv = TcExpr cenv overallTy env tpenv e1
  