     let chapter: UInt8
     let verse: UInt8
     var positions: [UInt8]
+    var wordPositions: WordPositions!
     
     init(reference: String) {
         let parts = reference.components(separatedBy: WordRef.delims)

    * This method searches for all verses that contain all of the words entered.
    * It does not consider the position of the words, but it keeps track of each occurrance.
    */
    func search1(bible: Bible, words: [String]) -> [WordRef: WordPositions] {
        var result = [WordRef: WordPositions]()
        let measure = Measurement()
        if words.count == 0 {
            return result
        }
        let refList: [[WordRef]] = BibleDB.shared.selectRefList3(bible: bible, words: words)
        if refList.count != words.count {
            return result
        }
        var mapList = [[WordRef: [UInt8]]]()
        for list in refList {
            var map = [WordRef: [UInt8]]()
            for item in list {
                map[item] = item.positions
            }
            mapList.append(map)
        }
        let firstList = mapList[0]
        measure.duration(location: "finish database")
        for (reference, _) in firstList {
            let wordPos = presentInAllSets(mapList: mapList, reference: reference)
            if wordPos != nil {
                result[reference] = wordPos
            }
        }
        measure.final(location: "search1")
        return result
    }
    
    private func presentInAllSets(mapList: [[WordRef: [UInt8]]], reference: WordRef) -> WordPositions? {
        var result = WordPositions(numWords: mapList.count)
        result.addWord(word: 0, positions: mapList[0][reference]!) // add first word wordPositions
        for index in 1..<mapList.count {
            let map = mapList[index]
            let wordPositions = map[reference]
            if wordPositions == nil {
                return nil
            } else {
                result.addWord(word: index, positions: wordPositions!)
            }
        }
        return result

    * where they are entered in the consequtive order of the search parameters.
    * This search method should be used for chinese
    */
/*
    func search2(bible: Bible, words: [String]) -> [WordRef: WordPositions] {
        var finalResult = [WordRef: WordPositions]()
        let results1 = self.search1(bible: bible, words: words)
