   be available to other callers) and throws the poison pill's exception.
   Otherwise returns the instance that was passed in."
   [instance pool]
-  {:post [((some-fn nil? #(nil? (schema/check PoolInstance %))) %)]}
+  {:post [((some-fn nil? #(nil? (schema/check JRubyPuppetInstance %))) %)]}
   (when (instance? PoisonPill instance)
     (.put pool instance)
     (throw (IllegalStateException. "Unable to borrow JRuby instance from pool"

  return-to-pool
  "Return a borrowed pool instance to its free pool."
  [context :- PoolContext
   instance :- PoolInstance]
  (let [pool (get-pool context)]
    (.put pool instance)))
    (validate-instance-from-pool! instance pool)))

(schema/defn ^:always-validate
  borrow-from-pool-with-timeout :- (schema/maybe JRubyPuppetInstance)
  "Borrows a JRubyPuppet interpreter from the pool, like borrow-from-pool but a
  blocking timeout is provided. If an instance is available then it will be
  immediately returned to the caller, if not then this function will block
