                          {:actual actual})))
         :else
         (report {:type :mock-expected-result-failure
-                 :position (call :position)
-                 :binding-note (call :binding-note)
+                 :position (:position call)
+                 :binding-note (:binding-note call)
                  :actual actual
-                 :expected (call :expected-result) })))
+                 :expected (:expected-result call) })))
 
-(defmethod ^{:private true} check-result :check-negated-match [actual call]
-   (cond (not (extended-= actual (call :expected-result)))
+(defmethod check-result :check-negated-match [actual call]
+   (cond (not (extended-= actual (:expected-result call)))
          (report {:type :pass})
 
         (fn? (call :expected-result))
         (report {:type :mock-actual-inappropriately-matches-checker
-                 :binding-note (call :binding-note)
-                 :position (call :position)
-                 :expected (call :expected-result-text-for-failures)
+                 :binding-note (:binding-note call)
+                 :position (:position call)
+                 :expected (:expected-result-text-for-failures call)
                  :actual actual})
 
         :else
         (report {:type :mock-expected-result-inappropriately-matched
-                 :binding-note (call :binding-note)
-                 :position (call :position)
-                 :expected (call :expected-result-text-for-failures) 
+                 :binding-note (:binding-note call)
+                 :position (:position call)
+                 :expected (:expected-result-text-for-failures call) 
                  :actual actual})))
 
-(defn expect* [call-map local-fakes]
+(defn expect* [unprocessed-check local-fakes]
   "The core function in unprocessed Midje. Takes a map describing a
   call and a list of maps, each of which describes a secondary call
   the first call is supposed to make. See the documentation at

(defmulti ^{:private true} check-result (fn [actual call]
                         (:desired-check call)))

(defmethod ^{:private true} check-result :check-match [actual call]
  (cond (extended-= actual (call :expected-result))
        (report {:type :pass})

        (fn? (call :expected-result))
        (report (merge {:type :mock-expected-result-functional-failure
                        :binding-note (call :binding-note)
                        :position (call :position)
                        :expected (call :expected-result-text-for-failures) }
                       (if (chatty-checker? (call :expected-result))
                         (do
                           (let [chatty-result ((call :expected-result) actual)]
                             (if (map? chatty-result)
                               chatty-result
                               {:actual actual

    (with-installed-fakes (concat (reverse (filter :data-fake (background-fakes))) local-fakes)
      (let [code-under-test-result (capturing-exception
                                    (eagerly
                                     ((:function-under-test unprocessed-check))))]
        (check-call-counts local-fakes)
        (check-result code-under-test-result unprocessed-check)
        :irrelevant-return-value))))
