         if isContainsOnlyAtomaryValues(json) { return nil }
         if let jsonDictionary = json as? [String: AnyObject] {
             for (key, childNode) in jsonDictionary {
-                if key == arrayKey {
-                    if let arrayValue = childNode as? [AnyObject], isValid(array: arrayValue, for: valuesType) {
-                        return arrayValue as AnyObject?
-                    }
+                if key == arrayKey, let arrayValue = childNode as? [AnyObject], isValid(array: arrayValue, for: valuesType) {
+                    return arrayValue as AnyObject?
                 } else {
                     if let foundedValue = findRecursively(arrayKey: arrayKey, valuesType: valuesType, json: childNode) {
                         return foundedValue

    }
    //Search for a dictionary
    internal class func findRecursively(dictionaryKey: String, json: AnyObject) -> AnyObject? {
        if isContainsOnlyAtomaryValues(json) {
            return nil
        }
        if let jsonDictionary = json as? [String: AnyObject] {
            for (key, childNode) in jsonDictionary {
                if key == dictionaryKey {
                    if let dictionaryValue = childNode as? [String: AnyObject] {
                        return dictionaryValue as AnyObject?
                    }
                } else {
                    if let foundedValue = findRecursively(dictionaryKey: dictionaryKey, json: childNode) {
                        return foundedValue

        }
        return nil
    }
    internal class func check(json: AnyObject, for type: JsonNodeType) throws {
        switch type {
        case .array:
            if !(json is Array<AnyObject>) {
                throw MapperError.wrongSetting
            }
            break
        case .dictionary:
            if !(json is [String: AnyObject]) {
                throw MapperError.wrongSetting
            }
            break
        }
    }
    internal class func map(initialObject: Mapable, json: AnyObject) throws {
        var paths = initialObject.helpingPath
        let initialPath = paths.removeFirst()
        switch initialPath {
        case let .target(nodeType):
            try check(json: json, for: nodeType)
            break
        default:
            throw MapperError.wrongSetting
        }
        var processingJson: AnyObject = json as AnyObject
        for atomaryPath in initialObject.helpingPath {
            switch atomaryPath {
            case let .target(nodeType), let .destination(nodeType):
