anchor.diff:                  let expr = compileToSeqPipeline queryExpr' context optimize
                   expr 
               | Aggregate (seed, Lambda ([accVarExpr; varExpr], bodyExpr), queryExpr') ->
  +                let seed = optimize seed
                   let bodyExpr = optimize bodyExpr
                   let initExpr = assign accVarExpr seed
                   let accExpr = assign accVarExpr bodyExpr
  
positive.code:                 let exprs' = addAssign indexExpr (constant 1) :: ifThenElse bodyExpr empty (``continue`` context.ContinueLabel) :: assign context.CurrentVarExpr paramExpr :: context.Exprs
                  compileToSeqPipeline queryExpr' { context with CurrentVarExpr = paramExpr; InitExprs = assign indexExpr (constant -1) :: context.InitExprs; VarExprs = indexExpr :: paramExpr :: context.VarExprs; Exprs = exprs' } optimize
              | Take (countExpr, queryExpr') ->
                  let countVarExpr = var "___takeCount___" typeof<int> //special "local" variable for Take
                  let exprs' = addAssign countVarExpr (constant 1) :: ifThenElse (greaterThan countVarExpr countExpr) (``break`` context.BreakLabel) empty :: context.Exprs
                  compileToSeqPipeline queryExpr' { context with InitExprs = assign countVarExpr (constant 0) :: context.InitExprs ; VarExprs = countVarExpr :: context.VarExprs; Exprs = exprs' } optimize
              | Skip (countExpr, queryExpr') ->
                  let countVarExpr = var "___skipCount___" typeof<int> //special "local" variable for Skip
                  let exprs' = addAssign countVarExpr (constant 1) :: ifThenElse (lessThanOrEqual countVarExpr countExpr) (``continue`` context.ContinueLabel) empty :: context.Exprs
                  compileToSeqPipeline queryExpr' { context with InitExprs = assign countVarExpr (constant 0) :: context.InitExprs ; VarExprs = countVarExpr :: context.VarExprs; Exprs = exprs' } optimize
  
negative.code:                             (loop (block [] [incCurrExpr; branchExpr ; context.AccExpr]) context.BreakLabel context.ContinueLabel)
                      block (countVarExpr :: currVarExpr :: context.VarExprs) [block [] context.InitExprs; countVarInitExpr; currVarInitExpr; loopExpr; context.ReturnExpr ]
              | RepeatGenerator(elementExpr, countExpr) ->
                      let countExpr = optimize countExpr
                      let t = elementExpr.Type
                      let countVarExpr = var "___count___" typeof<int>
                      let countVarInitExpr = assign countVarExpr countExpr
  