         (macros/validation-error this x (list 'instance? expected-class x)))))
 
   (explain [_]
-    (list 'instance? expected-class)))
+    (list 'instance? expected-class))
+
+  SchemaUnwrapper
+
+  (unwrap-schema [_] expected-class))
+
+(extend-protocol SchemaUnwrapper
+
+  Maybe
+  (unwrap-schema [this]
+    (.schema this))
+
+  EnumSchema
+  (unwrap-schema [this]
+    (.vs this)))
 
 (defn with-description
   "Adds a :description key to the metadata of the schema.

  ([name docstring form]
   `(def ~name ~docstring (schema ~name ~docstring ~form))))

(defrecord IsInstance [^Class expected-class]
  s/Schema


  "Some small enhancements to Prismatic Schema that are valuable to, or needed by, the Swagger support."
  {:added "0.1.27"}
  (:require [schema.core :as s]
            [schema.macros :as macros])
  (:import [schema.core Maybe EnumSchema]))

(defmacro schema
  "Creates a named schema, which includes metadata as per [[defschema]]. This is useful for one-off
