    :UserType {:name "User"
               :kind :OBJECT
               :fields {:id {:type :GraphQLString}
-                       :name {:type :GraphQLString}}
+                       :name {:type :GraphQLString}
+                       :profilePic {:type :GraphQLString}}
               :args {}
               :resolve-fn (fn [object]
                             (println "user resolve-fn: ")
-                            {:id "test"})}})
+                            {:id "test"
+                             :name "good"
+                             :additional "extra"})}})
 
 (def schema
   {:query {:name "Query"

                   (println "SelectionSet: " args)
                   [:selection-set args])
   :Selection (fn selection [& args]
                (println "Selection: " args)
                (into [:selection] args))
   :Field (fn field [& args]
            (println "Field: " args)
            [:field (into {} args)])

  [selection]
  {:post [(not (nil? %))]}
  (println "get-selection-object-name: " selection)
  (let [name (get-in (second selection) [:field :name])]
    (println "get-selection-object-name: name: " name)
    name))

(defn get-selection-name
  [selection]
  (println "get-selection-name: " selection)
  (let [name (get-in (second selection) [:field :name])]
    (println "get-selection-name: name: " name)
    name))

(defn get-selection-type [selection]
  (println "get-selection-type: selection: " selection)
  (let [opts (second selection)]
    (cond
      (:field opts) :field
      :default (throw (ex-info (format "Selection Type is not handled for selection: %s." selection) {:type (:field opts)
                                                                                             :opts opts})))))

(defn get-field-selection-set [selection]
  (println "*** get-field-selection-set: selection: " selection)
  (let [opts (second selection)
        selection-set (get-in opts [:field :selection-set])]
    (println "field: " opts)
    (println "get-field-selection-set: selection-set: " selection-set)
    selection-set))

(defn collect-selection [col selection]
  (println "collect-selection: " selection)
