                 
                 if let extractedRanges = extractedRanges, !extractedRanges.isEmpty {
                     rangesQueue.sync {
-                        ranges.append(contentsOf: extractedRanges)
+                        ranges += extractedRanges
                     }
                 }
                 

                DispatchQueue.main.async {
                    childProgress.completedUnitCount += 1
                }
            })
            
            guard !self.isCancelled else { return [:] }
            
            // extract simple words
            if !simpleWordsDict.isEmpty || !simpleICWordsDict.isEmpty {
                let extractedRanges = self.ranges(simpleWords: simpleWordsDict,
                                                  ignoreCaseWords: simpleICWordsDict,
                                                  charSet: self.simpleWordsCharacterSets![syntaxType]!)
                ranges.append(contentsOf: extractedRanges)
            }
            
            // store range array

    // MARK: Private Methods
    
    /// extract ranges of passed-in words with Scanner by considering non-word characters around words
    private func ranges(simpleWords words: [String], ignoreCaseWords: [String], charSet: CharacterSet) -> [NSRange] {
        
        var ranges = [NSRange]()
        
