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

                }
            }
        }
        if objects.count == 0 {
            if 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(property: mappingProperty, dictionary: dictionary)
        }
        guard let object = objectType.init(Wrapping(propertyDictionary)) else {
            throw MapperError.wrongFormat

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