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


//MARK: - Validation methods
extension Mapper {
    internal class func validate(property: MappingProperty, dictionary: DictionaryNode) throws -> AnyObject? {
        switch property {
        case let .property(type, key, optional):
            return try validate(key, type: type, optional: optional, dictionary: dictionary)

        //Base of recursion
        if isContainsOnlyAtomaryValues(json), let jsonDictionary = json as? DictionaryNode {
            //At this point we are reached last level of JSON tree
            let fittingNodes = jsonDictionary
                .filter() { $0.key == propertyKey && isValid($0.value, for: mappingType) }
                .map{$0.value}
            return fittingNodes.first
        } else {
            //Our JSON object contains values in wich we can fallthhrought
            
            //if JSON object is Dictionary - check it
            var childNodes = ArrayNode()
            var potentialFittingNodes = ArrayNode()
            if let jsonDictionary = json as? DictionaryNode {
                potentialFittingNodes = jsonDictionary
                    .filter() {$0.key == propertyKey && isValid($0.value, for: mappingType)}
                    .map() {$0.value}
                if let fittingNode = potentialFittingNodes.first { return fittingNode }
                childNodes = jsonDictionary.map() { $0.value }
            }
            //if JSON object is Array - check it
            if let jsonArray = json as? ArrayNode {
                childNodes = jsonArray
            }
            for childNode in childNodes {
                if let foundValue = findRecursively(propertyKey: propertyKey, mappingType: mappingType, json: childNode) {
                    return foundValue
                }
            }
            return nil
