     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) {
+    public var collate: Collate?
+    public var smoothing: SmoothingModel?
+    
+    public init(field: String, text: String? = nil, prefix: String? = nil, regex: String? = nil, analyzer: String? = nil, size: Int? = nil, shardSize: Int? = nil, maxErrors: Decimal? = nil, separator: String? = nil, realWordErrorLikelihood: Decimal? = nil, confidence: Decimal? = nil, gramSize: Int? = nil, forceUnigrams: Bool? = nil, tokenLimit: Int? = nil, highlight: PhraseSuggestion.Highlight? = nil, collate: Collate? = nil, smoothing: SmoothingModel? = nil) {
         self.field = field
         self.text = text
         self.prefix = prefix


extension PhraseSuggestion.DirectCandidateGenerator: Equatable {}

extension PhraseSuggestion: Equatable {}

public enum SmoothingModelType: String, Codable {
    case laplace

        }
        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 {
