             let list: [Character] = ["?", "!", "."]
             if next.isAZ() || list.contains(next) { // TODO: check complex case
                 result.append(next)
+                index = characters.index(after: index)
             } else if next == "[" {
                 let block = try findSquare(index)
                 index = block.index
                 result += block.string
-                continue
             } else if next == "(" {
                 let block = try findParentheses(index)
                 index = block.index
                 result += block.string
-                continue
             } else if next == "\"" {
                 let quote = try findQuote(index)
                 index = quote.index
                 result += quote.string
-                continue
             } else {
                 if result.isEmpty {
                     return nil
                 }
                 return (result, index)
             }
-            index = characters.index(after: index)
+
         }
         return nil
     }

            }
        }
        // TODO: no need to new obj
        let obj = try SwiftParser(string: result).format()
        return (obj, index)
    }

    func findQuote(_ start: String.Index) throws -> (string: String, index: String.Index) {


extension String {

    func findParentheses(_ start: String.Index, needFormat: Bool = true) throws -> (string: String, index: String.Index) {
        return try findBlock(start, startSign: "(", endSign: ")", needFormat: needFormat)
    }

    func findSquare(_ start: String.Index, needFormat: Bool = true) throws -> (string: String, index: String.Index) {
        return try findBlock(start, startSign: "[", endSign: "]", needFormat: needFormat)
    }

    func findBlock(_ start: String.Index, startSign: String, endSign: Character, needFormat: Bool) throws -> (string: String, index: String.Index) {
        var index = characters.index(after: start)
        var result = startSign
        while index < endIndex {
