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

  getMatcher: (argumentClass) ->
    unless @_matchers[argumentClass]? then throw new Error

    new @_matchers[argumentClass]()

matcherFactory = new MatcherFactory()


    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)
