             self.minDocFreq = minDocFreq
         }
     }
+    
+    public struct Collate {
+        public let query: Script
+        public let params: [String: CodableValue]?
+        public let purne: Bool
+    }
 }
 
 extension PhraseSuggestion.Highlight: Codable {

    public var forceUnigrams: Bool?
    public var tokenLimit: Int?
    public var highlight: Highlight?
    public var collateQuery: String?
    public var collateParams: [String: String]?
    public var collatePrune: Bool?
    public var smoothing: String?
    
    public init(field: String, text: String? = nil, prefix: String? = nil, regex: String? = nil, analyzer: String? = nil, size: Int? = nil, shardSize: Int? = nil) {
        self.field = field
        self.text = text
        self.prefix = prefix

        }
        return false
    }
}

public func isEqualSmoothingModels(_ lhs: SmoothingModel?, _ rhs: SmoothingModel?) -> Bool {
    if lhs == nil && rhs == nil {
        return true
    }
    if let lhs = lhs, let rhs = rhs {
        return lhs.isEqualTo(rhs)
    }
    return false
}

public struct StupidBackoff: SmoothingModel {
