             arrayCount = 0
             flattenedArray = []
             for element in previousStepResult
-                if AbstractMatcher._getClassOf(element) is "array"
+                if Utils.getClassOf(element) is "array"
                     flattenedArray.push element...
                     arrayCount += 1
                 else

        
matcherFactory = new MatcherFactory()

class AbstractMatcher
    @_getClassOf: (what) -> 
        whatAsString = Object::toString.call(what)
        /\[object (\w+)\]/.exec(whatAsString)[1].toLowerCase()
        
    @getMatcher: (argument) ->
        argumentClass = @_getClassOf argument
        matcherFactory.getMatcher argumentClass
    
    compile: (value) ->

        
class TypeMatcher extends AbstractMatcher        
    match: (argument, overloadSignatureElement) ->
        Utils.getClassOf(argument) is overloadSignatureElement
        
    matcherFactory.registerMatcher "string", TypeMatcher
        
