package Ġcom . mongodb . mong osh . service Ċ Ċ import Ġcom . mongodb . Cursor Type Ċ import Ġcom . mongodb . Read Concern Ċ import Ġcom . mongodb . Read Concern Level Ċ import Ġcom . mongodb . Read Preference Ċ import Ġcom . mongodb . client . Aggregate Iterable Ċ import Ġcom . mongodb . client . Find Iterable Ċ import Ġcom . mongodb . client . Mongo Database Ċ import Ġcom . mongodb . client . Mongo Iterable Ċ import Ġcom . mongodb . client . model .* Ċ import Ġcom . mongodb . mong osh . result . Command Exception Ċ import Ġorg . bson . Document Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ internal Ġfun Ġ< T > Ġconvert ( o : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverter s : ĠMap < String , Ġ( T , ĠAny ?) Ġ-> ĠEither < T >>, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Converter : Ġ( T , ĠString , ĠAny ?) Ġ-> ĠEither < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap : ĠMap < *, Ġ* >? ): ĠEither < T > Ġ{ ĊĠĠĠ Ġif Ġ( map Ġ== Ġnull ) Ġreturn ĠRight ( o ) ĊĠĠĠ Ġvar Ġaccumulator Ġ= Ġo ĊĠĠĠ Ġfor Ġ( key Ġin Ġmap . keys ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( key Ġ! is ĠString ) Ġcontinue ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmap [ key ] ĊĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= Ġconverter s [ key ] ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġif Ġ( converter Ġ!= Ġnull ) Ġconverter ( accumulator , Ġvalue ) Ġelse Ġdefault Converter ( accumulator , Ġkey , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( res ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRight Ġ-> Ġaccumulator Ġ= Ġres . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLeft Ġ-> Ġreturn Ġres ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠRight ( accumulator ) Ċ } Ċ Ċ internal Ġval Ġwrite Concern Converters : ĠMap < String , Ġ( Mongo Database , ĠAny ?) Ġ-> ĠEither < Mongo Database >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" w " Ġto Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber Ġ-> ĠRight ( db . with Write Concern ( db . write Concern . with W ( value . toInt ()))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠRight ( db . with Write Concern ( db . write Concern . with W ( value ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLeft ( Command Exception (" w Ġhas Ġto Ġbe Ġa Ġnumber Ġor Ġa Ġstring ", Ġ" Failed To Parse ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" j " Ġto Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> ĠRight ( db . with Write Concern ( db . write Concern . with Journal ( value ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber Ġ-> ĠRight ( db . with Write Concern ( db . write Concern . with Journal ( value Ġ!= Ġ 0 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLeft ( Command Exception (" j Ġmust Ġbe Ġnumeric Ġor Ġa Ġboolean Ġvalue ", Ġ" Failed To Parse ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" w timeout " Ġto Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber Ġ-> ĠRight ( db . with Write Concern ( db . write Concern . with W Timeout ( value . to Long (), ĠTimeUnit . MILLISECONDS ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠRight ( db . with Write Concern ( db . write Concern . with W Timeout ( 0 , ĠTimeUnit . MILLISECONDS ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġwrite Concern Default Converter Ġ= Ġun recognized Field < Mongo Database >(" write Ġconcern ") ĊĊ Ċ internal Ġval Ġread Concern Converter : Ġ( Mongo Database , ĠAny ?) Ġ-> ĠEither < Mongo Database > Ġ= Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠ Ġif Ġ( value Ġis ĠMap < *, Ġ* >) Ġconvert ( db , Ġread Concern Converters , Ġread Concern Default Converter , Ġvalue ) ĊĠĠĠ Ġelse ĠLeft ( Command Exception (" invalid Ġparameter : Ġexpected Ġan Ġobject Ġ( read Concern )", Ġ" Failed To Parse ")) Ċ } Ċ Ċ internal Ġval Ġread Concern Converters : ĠMap < String , Ġ( Mongo Database , ĠAny ?) Ġ-> ĠEither < Mongo Database >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" level ", ĠString :: class . java ) Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . with Read Concern ( Read Concern ( Read Concern Level . fromString ( value ))) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġread Concern Default Converter Ġ= Ġun recognized Field < Mongo Database >(" read Ġconcern ") ĊĊ Ċ internal Ġval Ġdb Converters : ĠMap < String , Ġ( Mongo Database , ĠAny ?) Ġ-> ĠEither < Mongo Database >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" write Concern ", ĠMap :: class . java ) Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconvert ( db , Ġwrite Concern Converters , Ġwrite Concern Default Converter , Ġvalue ). get OrThrow () ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" read Concern " Ġto Ġread Concern Converter , ĊĠĠĠĠĠĠĠ Ġ" read Preference " Ġto Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġis ĠMap < *, Ġ* >) Ġconvert ( db , Ġread Preference Converters , Ġread Preference Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠLeft ( Command Exception (" invalid Ġparameter : Ġexpected Ġan Ġobject Ġ( read Preference )", Ġ" Failed To Parse ")) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġdb Default Converter Ġ= Ġun recognized Field < Mongo Database >(" db Ġoptions ") Ċ Ċ internal Ġfun Ġ< T > Ġun recognized Field ( objectName : ĠString ): Ġ( T , ĠString , ĠAny ?) Ġ-> ĠEither < T > Ġ= Ġ{ Ġ_, Ġkey , Ġ_ Ġ-> ĊĠĠĠ ĠLeft ( Command Exception (" unrecognized Ġ$ objectName Ġfield : Ġ$ key ", Ġ" Failed To Parse ")) Ċ } Ċ Ċ internal Ġval Ġread Preference Converters : ĠMap < String , Ġ( Mongo Database , ĠAny ?) Ġ-> ĠEither < Mongo Database >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" mode " Ġto Ġ{ Ġdb , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" primary " Ġ-> ĠRead Preference . primary () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" primary Preferred " Ġ-> ĠRead Preference . primary Preferred () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" secondary " Ġ-> ĠRead Preference . secondary () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" secondary Preferred " Ġ-> ĠRead Preference . secondary Preferred () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nearest " Ġ-> ĠRead Preference . nearest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pref Ġ== Ġnull ) ĠLeft ( IllegalArgumentException (" Unknown Ġread Ġpreference Ġmode : Ġ$ value ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠRight ( db . with Read Preference ( pref )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLeft ( Command Exception (" mode Ġhas Ġto Ġbe Ġa Ġstring ", Ġ" Failed To Parse ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġread Preference Default Converter Ġ= Ġun recognized Field < Mongo Database >(" read Ġpreference ") Ċ Ċ internal Ġval Ġtime Series Converters : ĠMap < String , Ġ( TimeSeries Options , ĠAny ?) Ġ-> ĠEither < TimeSeries Options >> Ġ= Ġmap Of ( ĊĠĠĠ Ġtyped (" time Field ", ĠString :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠ ĠTime Series Options ( value ). meta Field ( opt . meta Field ). gran ularity ( opt . gran ularity ) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġtyped (" meta Field ", ĠString :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠ Ġopt . meta Field ( value ) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġtyped (" gran ularity ", ĠString :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠ Ġopt . gran ularity ( TimeSeries Gran ularity . valueOf ( value . uppercase ( Locale . EN GL ISH ))) ĊĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġtime Series Default Converter Ġ= Ġun recognized Field < TimeSeries Options >(" timeseries ") Ċ Ċ internal Ġval Ġcollation Converters : ĠMap < String , Ġ( Col lation . Builder , ĠAny ?) Ġ-> ĠEither < Col lation . Builder >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" locale ", ĠString :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . locale ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" case Level ", ĠBoolean :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . case Level ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" case First ", ĠString :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . coll ation Case First ( Col lation Case First . fromString ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" strength ", ĠInt :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . coll ation Strength ( Col lation Strength . from Int ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" numeric Ordering ", ĠBoolean :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . numeric Ordering ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" alternate ", ĠString :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . coll ation Alternate ( Col lation Alternate . fromString ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max Variable ", ĠString :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . coll ation Max Variable ( Col lation Max Variable . fromString ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" back wards ", ĠBoolean :: class . java ) Ġ{ Ġcollation , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollation . back wards ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġcollation Default Converter Ġ= Ġun recognized Field < Col lation . Builder >(" coll ation ") Ċ Ċ internal Ġval Ġiterable Converters : ĠMap < String , Ġ( Mongo Iterable <* >, ĠAny ?) Ġ-> ĠEither < Mongo Iterable <* >>> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" batch Size ", ĠNumber :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . batch Size ( value . toInt ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" cursor ", ĠDocument :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconvert ( iterable , Ġcursor Converters , Ġcursor Default Converter , Ġvalue ). get OrThrow () Ġas ĠAggregate Iterable < *> ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġaggregate Converters : ĠMap < String , Ġ( Aggregate Iterable <* >, ĠAny ?) Ġ-> ĠEither < Aggregate Iterable <* >>> Ġ= Ġiterable Converters Ġ+ Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠDocument :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" allow Disk Use ", ĠBoolean :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . allow Disk Use ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max Time MS ", ĠNumber :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . max Time ( value . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bypass Document Validation ", ĠBoolean :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . bypass Document Validation ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" hint " Ġto Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠRight ( iterable . hint ( Document ( value , Ġ 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDocument Ġ-> ĠRight ( iterable . hint ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLeft ( Command Exception (" hint Ġmust Ġbe Ġstring Ġor Ġobject Ġvalue ", Ġ" Type Mismatch ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" comment ", ĠString :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . comment ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġaggregate Default Converter Ġ= Ġun recognized Field < Aggregate Iterable <* >> (" aggregate Ġoptions ") Ċ Ċ operator Ġfun Ġ< K , ĠV , ĠV 1 > ĠMap < K , ĠV >. plus ( map : ĠMap < K , ĠV 1 >): ĠMap < K , ĠV 1 > Ġ{ ĊĠĠĠ Ġreturn Ġ( this . keys . as Sequence () Ġ+ Ġmap . keys . as Sequence ()). associate With Ġ{ Ġ( this [ it ] Ġ?: Ġmap [ it ]) Ġas ĠV 1 Ġ} Ċ } Ċ Ċ internal Ġval Ġfind Converters : ĠMap < String , Ġ( Find Iterable <* >, ĠAny ?) Ġ-> ĠEither < Find Iterable <* >>> Ġ= Ġiterable Converters Ġ+ Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" allow Partial Results ", ĠBoolean :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . partial ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠDocument :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" comment ", ĠString :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . comment ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" hint " Ġto Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠRight ( iterable . hint ( Document ( value , Ġ 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDocument Ġ-> ĠRight ( iterable . hint ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLeft ( Command Exception (" hint Ġmust Ġbe Ġstring Ġor Ġobject Ġvalue ", Ġ" Type Mismatch ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" limit ", ĠNumber :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . limit ( value . toInt ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max ", ĠDocument :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . max ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max Time MS ", ĠNumber :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . max Time ( value . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" min ", ĠDocument :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . min ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" no Cursor Timeout ", ĠBoolean :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . no Cursor Timeout ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" op log Replay ", ĠBoolean :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . op log Replay ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" projection ", ĠDocument :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . projection ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" return Key ", ĠBoolean :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . return Key ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" sort ", ĠDocument :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . sort ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" skip ", ĠNumber :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . skip ( value . toInt ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" t ailable ", ĠString :: class . java ) Ġ{ Ġiterable , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . cursor Type ( Cursor Type . valueOf ( value )) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġfind Default Converter Ġ= Ġun recognized Field < Find Iterable <* >> (" find Ġoptions ") Ċ Ċ internal Ġval Ġcursor Converters : ĠMap < String , Ġ( Mongo Iterable <* >, ĠAny ?) Ġ-> ĠEither < Mongo Iterable <* >>> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" batch Size ", ĠInt :: class . java ) Ġ{ Ġiterable , Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . batch Size ( v ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġcursor Default Converter Ġ= Ġun recognized Field < Mongo Iterable <* >> (" cursor ") Ċ Ċ internal Ġval Ġcount Options Converters : ĠMap < String , Ġ( Count Options , ĠAny ?) Ġ-> ĠEither < Count Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" limit ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . limit ( value . toInt ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" skip ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . skip ( value . toInt ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" hint " Ġto Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠRight ( opt . hint ( Document ( value , Ġ 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> ĠRight ( opt . hint ( Document ( value Ġas ĠMap < String , ĠAny ?> ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLeft ( Command Exception (" hint Ġmust Ġbe Ġstring Ġor Ġobject Ġvalue ", Ġ" Type Mismatch ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max Time MS ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . max Time ( value . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġcount Options Default Converter Ġ= Ġun recognized Field < Count Options >(" count Ġoptions ") Ċ Ċ internal Ġval Ġestimated Count Options Converters : ĠMap < String , Ġ( Est imated Document Count Options , ĠAny ?) Ġ-> ĠEither < Est imated Document Count Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" max Time MS ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . max Time ( value . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġestimated Count Options Default Converter Ġ= Ġun recognized Field < Est imated Document Count Options >(" estimate Ġcount Ġoptions ") Ċ Ċ internal Ġval Ġreplace Options Converters : ĠMap < String , Ġ( Replace Options , ĠAny ?) Ġ-> ĠEither < Replace Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" upsert ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . upsert ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bypass Document Validation ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . bypass Document Validation ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" filter " Ġto Ġ{ Ġopt , Ġ_ Ġ-> ĠRight ( opt ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ" replacement " Ġto Ġ{ Ġopt , Ġ_ Ġ-> ĠRight ( opt ) Ġ} Ċ ) Ċ Ċ internal Ġval Ġreplace Options Default Converter Ġ= Ġun recognized Field < Replace Options >(" replace Ġoptions ") Ċ Ċ internal Ġval Ġfind One And Replace Options Converters : ĠMap < String , Ġ( Find One And Replace Options , ĠAny ?) Ġ-> ĠEither < Find One And Replace Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" projection ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . projection ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" sort ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . sort ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max Time MS ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . max Time ( value . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" upsert ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . upsert ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" return Document ", ĠString :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . return Document ( if Ġ( value Ġ== Ġ" before ") ĠReturn Document . BEFORE Ġelse ĠReturn Document . AFTER ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġfind One And Replace Options Default Converters Ġ= Ġun recognized Field < Find One And Replace Options >(" find Ġand Ġreplace Ġoptions ") Ċ Ċ internal Ġval Ġbulk Write Options Converters : ĠMap < String , Ġ( Bulk Write Options , ĠAny ?) Ġ-> ĠEither < Bulk Write Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" ordered ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . ordered ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bypass Document Validation ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . bypass Document Validation ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġbulk Write Options Default Converter Ġ= Ġun recognized Field < Bulk Write Options >(" bulk Ġwrite Ġoptions ") ĊĊ Ċ internal Ġval Ġdelete Converters : ĠMap < String , Ġ( Delete Options , ĠAny ?) Ġ-> ĠEither < Delete Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġdelete Default Converter Ġ= Ġun recognized Field < Delete Options >(" delete Ġoptions ") Ċ Ċ internal Ġval Ġfind One AndUpdate Converters : ĠMap < String , Ġ( Find One AndUpdate Options , ĠAny ?) Ġ-> ĠEither < Find One AndUpdate Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" projection ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . projection ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" sort ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . projection ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max Time MS ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . max Time ( value . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" upsert ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . upsert ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" return Document ", ĠString :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . return Document ( if Ġ( value Ġ== Ġ" before ") ĠReturn Document . BEFORE Ġelse ĠReturn Document . AFTER ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" array Filters ", ĠList :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . any Ġ{ Ġit Ġ! is ĠDocument Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" array Filters Ġmust Ġbe Ġa Ġlist Ġof Ġobjects : Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . array Filters ( value . filter Is Instance < Document >()) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġfind One AndUpdate Default Converter Ġ= Ġun recognized Field < Find One AndUpdate Options >(" find Ġone Ġand Ġupdate Ġoptions ") Ċ Ċ internal Ġval Ġfind One And Delete Converters : ĠMap < String , Ġ( Find One And Delete Options , ĠAny ?) Ġ-> ĠEither < Find One And Delete Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" projection ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . projection ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" sort ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . projection ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max Time MS ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . max Time ( value . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġfind One And Delete Default Converter Ġ= Ġun recognized Field < Find One And Delete Options >(" find Ġone Ġand Ġdelete Ġoptions ") Ċ Ċ internal Ġval Ġupdate Converters : ĠMap < String , Ġ( Update Options , ĠAny ?) Ġ-> ĠEither < Update Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" upsert ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . upsert ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" array Filters ", ĠList :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . any Ġ{ Ġit Ġ! is ĠDocument Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" array Filters Ġmust Ġbe Ġa Ġlist Ġof Ġobjects : Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . array Filters ( value . filter Is Instance < Document >()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bypass Document Validation ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . bypass Document Validation ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġupdate Default Converter Ġ= Ġun recognized Field < Update Options >(" update Ġoptions ") Ċ Ċ internal Ġval Ġindex Model Converters : ĠMap < String , Ġ( Index Model , ĠAny ?) Ġ-> ĠEither < Index Model >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠMap :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . coll ation ( coll ation )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" key ", ĠMap :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( value Ġas ĠDocument , Ġmodel . options ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" background ", ĠBoolean :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . background ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" unique ", ĠBoolean :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . unique ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" name ", ĠString :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . name ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" partial Filter Expression ", ĠMap :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . partial Filter Expression ( value Ġas ĠDocument )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" sparse ", ĠBoolean :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . sparse ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" expire After Seconds ", ĠNumber :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . expire After ( value . to Long (), ĠTimeUnit . SECONDS )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" hidden ", ĠBoolean :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . hidden ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" storage Engine ", ĠMap :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . storage Engine ( value Ġas ĠDocument )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" weights ", ĠMap :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . weights ( value Ġas ĠDocument )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" default _ language ", ĠString :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . default Language ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" language _ override ", ĠString :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . language Override ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" text Index Version ", ĠInt :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . text Version ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" 2 d sphere Index Version ", ĠInt :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . sphere Version ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bits ", ĠInt :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . bits ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" min ", ĠDouble :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . min ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max ", ĠDouble :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . max ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bucket Size ", ĠDouble :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . bucket Size ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" wildcard Projection ", ĠMap :: class . java ) Ġ{ Ġmodel , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Model ( model . keys , Ġmodel . options . wildcard Projection ( value Ġas ĠDocument )) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġindex Model Default Converter Ġ= Ġun recognized Field < Index Model >(" index Ġmodel ") Ċ Ċ internal Ġval Ġcreate Collection Options Converters : ĠMap < String , Ġ( Create Collection Options , ĠAny ?) Ġ-> ĠEither < Create Collection Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" c apped ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . c apped ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" timeseries ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Series Ġ= Ġconvert ( TimeSeries Options (""), Ġtime Series Converters , Ġtime Series Default Converter , Ġvalue ). get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . time Series Options ( time Series ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" expire After Seconds ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . expire After ( value . to Long (), ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" auto Index Id ", ĠBoolean :: class . java ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" auto Index Id Ġwas Ġdeprecated Ġand Ġremoved ") ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" size ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . size InBytes ( value . to Long ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" max ", ĠNumber :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . max Documents ( value . to Long ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" storage Engine ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . storage Engine Options ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" validator ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . validation Options . validator ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" validation Level ", ĠString :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . validation Options . validation Level ( Validation Level . fromString ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" validation Action ", ĠString :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . validation Options . validation Action ( Validation Action . fromString ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" index Option Defaults ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . index Option Defaults ( Index Option Defaults (). storage Engine ( value )) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġcreate Collection Options Converter Ġ= Ġun recognized Field < Create Collection Options >(" create Ġcollection Ġoptions ") Ċ Ċ internal Ġval Ġcreate View Options Converters : ĠMap < String , Ġ( Create View Options , ĠAny ?) Ġ-> ĠEither < Create View Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" view On " Ġto Ġ{ Ġopt , Ġ_ Ġ-> ĠRight ( opt ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ" pipeline " Ġto Ġ{ Ġopt , Ġ_ Ġ-> ĠRight ( opt ) Ġ} Ċ ) Ċ Ċ internal Ġval Ġcreate View Options Converter Ġ= Ġun recognized Field < Create View Options >(" create Ġview Ġoptions ") ĊĊ Ċ internal Ġval Ġupdate Options Converters : ĠMap < String , Ġ( Update Options , ĠAny ?) Ġ-> ĠEither < Update Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" coll ation ", ĠDocument :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollation Ġ= Ġconvert ( Col lation . builder (), Ġcollation Converters , Ġcollation Default Converter , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . coll ation ( coll ation ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" upsert ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . upsert ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bypass Document Validation ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . bypass Document Validation ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" array Filters ", ĠList :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . array Filters ( value . filter Is Instance < Document >()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ" filter " Ġto Ġ{ Ġopt , Ġ_ Ġ-> ĠRight ( opt ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ" update " Ġto Ġ{ Ġopt , Ġ_ Ġ-> ĠRight ( opt ) Ġ} Ċ ) Ċ Ċ internal Ġval Ġupdate Options Default Converter Ġ= Ġun recognized Field < Update Options >(" update Ġoptions ") Ċ Ċ internal Ġval Ġinsert Many Converters : ĠMap < String , Ġ( Insert Many Options , ĠAny ?) Ġ-> ĠEither < Insert Many Options >> Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġtyped (" ordered ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . ordered ( value ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtyped (" bypass Document Validation ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopt . bypass Document Validation ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġinsert Many Default Converter Ġ= Ġun recognized Field < Insert Many Options >(" insert Ġmany Ġoptions ") Ċ Ċ internal Ġval Ġdistinct Converters : ĠMap < String , Ġ( Any ?, ĠAny ?) Ġ-> ĠEither < Any ? >> Ġ= Ġmap Of () Ċ Ċ internal Ġval Ġdistinct Default Converter Ġ= Ġun recognized Field < Any ?> (" distinct Ġoptions ") Ċ Ċ internal Ġval Ġrename Collection Converters : ĠMap < String , Ġ( Rename Collection Options , ĠAny ?) Ġ-> ĠEither < Rename Collection Options >> Ġ= Ġmap Of ( ĊĠĠĠ Ġtyped (" drop Target ", ĠBoolean :: class . java ) Ġ{ Ġopt , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠ Ġopt . drop Target ( value ) ĊĠĠĠ Ġ} Ċ ) Ċ Ċ internal Ġval Ġrename Collection Default Converter Ġ= Ġun recognized Field < Rename Collection Options >(" rename Ġcollection Ġoptions ") Ċ Ċ internal Ġfun Ġ< T , ĠC > Ġtyped ( name : ĠString , Ġclazz : ĠClass < C >, Ġapply : Ġ( T , ĠC ) Ġ-> ĠT ): ĠPair < String , Ġ( T , ĠAny ?) Ġ-> ĠEither < T >> Ġ= ĊĠĠĠĠĠĠĠ Ġname Ġto Ġ{ Ġo , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcast ed Ġ= Ġvalue Ġas ? ĠC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cast ed Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRight ( apply ( o , Ġcast ed )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLeft < T >( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠLeft ( Command Exception ("$ name Ġhas Ġto Ġbe Ġa Ġ${ clazz . simple Name }", Ġ" Type Mismatch ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊ