         var childNodes = ArrayNode()
         var potentialFittingNodes = ArrayNode()
         if let jsonDictionary = json as? DictionaryNode {
-            potentialFittingNodes = jsonDictionary.filter() { $0.key == arrayKey && $0.value is Array<AnyObject> }.map() { $0.value }
+            potentialFittingNodes = jsonDictionary.filter() { $0.key == arrayKey && $0.value is ArrayNode }.map() { $0.value }
             if let fittingNode = potentialFittingNodes.first { return fittingNode }
             childNodes = jsonDictionary.map() { $0.value }
         }

     - add recursively searching - done
     - implement all types of helping path - done
     - implement mapping of arrays - done
     - change logic of binding (without creating object)
     - added pattern search
     - implement correct error throwing
     - test coverage of all methods
     - refactoring and extending functionality
     - split empty initializer and map function
     */
    public class func map<T: Mapable>(_ json: AnyObject) throws -> T {
        return try map(json, type: T.self) as! T

                }
            }
        }
        if objects.count == 0 && arrayOfNodes.count != 0 {
            throw MapperError.notFound
        }
        return objects
    }
    internal class func bind(_ dictionary: DictionaryNode, to objectType: Mapable.Type) throws -> Mapable {
        var propertyDictionary = DictionaryNode()
        for (propertyName, mappingProperty) in objectType.relations {
            propertyDictionary[propertyName] = try validate(mappingProperty, dictionary: dictionary)
        }
        guard let object = objectType.init(Wrapping(propertyDictionary)) else {
            throw MapperError.wrongFormat
