                 codeKeys[index] = cp1
                 nameVals[index] = name
 
-                if (cp2 != empty) {
-                    var s = String()
-                    s.append(Character(UnicodeScalar(cp1)!))
-                    s.append(Character(UnicodeScalar(cp2)!))
-                    multipoints[name] = s
-                }
-                i = i + 1
+                if cp2 != empty {
+                    var string = String()
+                    string.append(Character(UnicodeScalar(cp1)!))
+                    string.append(Character(UnicodeScalar(cp2)!))
+                    multipoints[name] = string
+                }
+                i += 1
             }
         }
 


        public func nameForCodepoint(_ codepoint: Int ) -> String {
            //let ss = codeKeys.index(of: codepoint)

            var index = -1
            for s in codeKeys {
                if s == codepoint {
                    index = codeKeys.index(of: codepoint)!
                }
            }

            if (index >= 0) {
                // the results are ordered so lower case versions of same codepoint come after uppercase, and we prefer to emit lower
                // (and binary search for same item with multi results is undefined
                return (index < nameVals.count-1 && codeKeys[index+1] == codepoint) ?
                    nameVals[index+1] : nameVals[index]
            }
            return emptyName
        }

        private func size() -> Int {


            let reader: CharacterReader = CharacterReader(string)

            while !reader.isEmpty() {
                // NotNestedLessLess=10913,824;1887

                let name: String = reader.consumeTo("=")
