   return-to-pool
   "Return a borrowed pool instance to its free pool."
   [context :- PoolContext
-   instance :- PoolInstance]
+   instance :- JRubyPuppetInstance]
   (let [pool (get-pool context)]
     (.put pool instance)))
  (.size (get-pool context)))

(schema/defn ^:always-validate
  borrow-from-pool :- PoolInstance
  "Borrows a JRubyPuppet interpreter from the pool. If there are no instances
  left in the pool then this function will block until there is one available."
  [context :- PoolContext]

    (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
