             }
         }
         
+        /// Converts this to a BSONPrimitive
         public func makeBSONPrimitive() -> BSONPrimitive {
             return self.rawValue
         }
     }
     
+    /// The ICU comparison level: http://userguide.icu-project.org/collation/concepts#TOC-Comparison-Levels
     public enum Strength: Int32, CustomValueConvertible {
+        /// 1: Performs comparisons of the base characters only, ignoring other differences such as diacritics and case
         case primary = 1
+        
+        /// 2: Performs comparisons up to secondary differences, such as diacritics.
         case secondary = 2
+        
+        /// 3 (default): Performs comparisons up to tertiary differences, such as case and letter variants.
         case tertiary = 3
+        
+        /// 4: Same as 3, but requires proper punctuation or for comparing japanese text
         case quaternary = 4
+        
+        /// 5: Identical texts
         case identical = 5
         
+        /// Creates a Strength instance from a BSONPrimitive
         public init?(_ value: BSONPrimitive) {
             guard let number = value.int32 else {
                 return nil


/// https://docs.mongodb.com/manual/reference/collation/#collation-document-fields
public struct Collation: CustomValueConvertible {
    let locale: String
    let caseLevel: Bool
//    let caseFirst: Bool
    let strength: Strength
    let numericOrdering: Bool
    let alternate: Alternate
    let maxVariable: IgnorableCharacters?
    let backwards: Bool
    let normalization: Bool
    
    public init?(_ value: BSONPrimitive) {
        guard let doc = value.documentValue else {
            return nil

            }
        }
        
        /// Converts this Strength to a BSONPrimitive
        public func makeBSONPrimitive() -> BSONPrimitive {
            return self.rawValue
        }
