anchor.diff:                      let exprs, paramExprs, values = constantLifting context.Exprs
                       let paramExprs', values'  = QuerySubExpression.get isValidQueryExpr exprs 
                       let vars = Seq.append paramExprs context.VarExprs
  -                    let headerStr = headerStr (vars, (Array.append paramExprs paramExprs'), (Array.append values values'))
  +                    let headerStr = headerStr (TypeCollector.getTypes exprs, (Array.append paramExprs paramExprs'), (Array.append values values'))
                       let valueArgs = collectValueArgs (paramExprs, values) 
                       let (exprsStr, varsStr) = bodyStr exprs vars
                       let argsStr = argsToStr paramExprs vars
  
positive.code:                     let sourceLength = firstGpuArray.Length
                      let exprs, paramExprs, values = constantLifting context.Exprs
                      let vars = Seq.append paramExprs vars
                      let headerStr = headerStr (vars, paramExprs, values)
                      let valueArgs = collectValueArgs (paramExprs, values) 
                      let (exprsStr, varsStr) = bodyStr exprs vars
                      let argsStr = argsToStr paramExprs vars
  
negative.code:                     |> Seq.map structToStr
                      |> Set.ofSeq
                      |> Seq.fold (fun first second -> sprintf' "%s%s%s" first Environment.NewLine second) ""
                  let structsDefinitionStr (types : seq<Type>) =
                      types
                      |> Seq.filter isCustomStruct 
                      |> customStructsToStr
                  let argsToStr (argParamExprs : ParameterExpression[]) (paramExprs : seq<ParameterExpression>) = 
  