         [] data-processing-definition))))
 
 (defn- create-bindings-vector
-  [input rules nesting-level]
+  [input rules body-creation-fn output nesting-level]
   (reduce
     (fn [v rule]
       (let [rule-name (first rule)

        rules (:rules dsl-expression)
        output-sym (if (.endsWith output-type *incremental-indicator-suffix*)
                     'output)
        let-body-vec (condp (fn [^String v ^String s] (.startsWith s v)) output-type
                       "java-map" (create-let-body-vec-java-map-out rules output-sym 0)
                       "clj-map" (create-let-body-vec-clj-map-out rules output-sym 0)
                       "csv-str" (create-let-body-vec-csv-str-out rules output-sym 0)
                       "json-str" (create-let-body-vec-json-str-out rules output-sym 0)
                       (do
                         (println "Unknown output type:" output-type)
                         (println "Defaulting to :java-map as output type.")
                         (create-let-body-vec-java-map-out rules output-sym 0)))
;        _ (println "Created data processing function vector from DSL:" fn-body-vec)
        fn-body (create-let-expression input-sym rules let-body-vec)
;        _ (println "Created data processing function body:" fn-body)
        _ (pprint fn-body)
        _ (println "")

                                                  (create-bindings-vector
                                                    input
                                                    rule-expression
                                                    body-creation-fn
                                                    output
                                                    (inc nesting-level))))
          :default (println "Binding: unknown element for rule:" (str rule)))))
    []
    rules))

(defn- create-let-expression
  [input rules body-creation-fn output nesting-level]
  `(let
    ~(create-bindings-vector input rules body-creation-fn output nesting-level)
    ~(reverse (into '() (body-creation-fn rules output nesting-level)))))

(defn- create-let-body-vec-java-map-out
  [rules output nesting-level]
