'use strict'
function reusify (Constructor) {
  var head = new Constructor()
  var tail = head
  function get () {
    var current = head
    if (current.next) {
      head = current.next
    } else {
      head = new Constructor()
      tail = head
    }
    current.next = null
    return current
  }
  function release (obj) {
    tail.next = obj
    tail = obj
  }
  return {
    get: get,
    release: release
  }
}
module.exports = reusify