         Object.setPrototypeOf(overloadableFunction, Overloadable.prototype)
     else return (overloadableFunction) ->
       prototypeProperties = Object.getOwnPropertyNames(Overloadable.prototype)
+
       for property in prototypeProperties when property isnt "constructor"
         Object.defineProperty(overloadableFunction, property,
           value: Overloadable.prototype[property])

        matcher = AbstractMatcher.getMatcher(signatureElement)
      catch e
        throw new TypeError(ERRORS.UNSUPPORTED_SIGNATURE_ELEMENT)
      matcher.compile(signatureElement)

    @_signature = compiledSignature

    unless Array.isArray(signature)
      throw new Error(ERRORS.INVALID_OVERLOAD_SIGNATURE)

    unless typeof functionToCall is "function"
      throw new Error(ERRORS.INVALID_OVERLOAD_FUNCTION)

    overload = new Overload(signature, functionToCall)
