         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 }
         }

    internal class func check(_ json: AnyObject, for type: JsonNodeType) throws {
        switch type {
        case .array:
            if !(json is Array<AnyObject>) {
                throw MapperError.wrongSetting
            }
            break

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