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