   ([mv]
    {:pre [(maybe? mv)]}
    (when (just? mv)
-     (proto/extract mv)))
+     (p/extract mv)))
   ([mv default]
    {:pre [(maybe? mv)]}
    (if (just? mv)
-     (proto/extract mv)
+     (p/extract mv)
      default)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  "Return true in case of `v` is instance
  of Maybe monad."
  [v]
  (if (satisfies? proto/Context v)
    (identical? (proto/get-context v) maybe-monad)
    false))

(defn just

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(deftype Just [v]
  p/Context
  (get-context [_] maybe-monad)

  p/Extract
  (extract [_] v)

  #?(:clj clojure.lang.IDeref
