@ file : Suppress (" unused ", Ġ" Too Many Functions ") Ċ Ċ package Ġcom . jon as wan ke . unic orn . script . parameters Ċ Ċ import Ġcom . github . aj alt . cli kt . completion . Completion Candidates Ċ import Ġcom . github . aj alt . cli kt . core . Bad Parameter Value Ċ import Ġcom . github . aj alt . cli kt . core . Cli kt Error Ċ import Ġcom . github . aj alt . cli kt . core . Missing Parameter Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments .* Ċ import Ġcom . github . aj alt . cli kt . parameters . options .* Ċ import Ġcom . github . aj alt . cli kt . parameters . types .* Ċ import Ġcom . jon as wan ke . unic orn . core . Base Command Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . FileSystem Ċ import Ġjava . nio . file . FileSystem s Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ interface ĠUn icorn Option < T , ĠA Ġ: ĠOption Delegate < T >> Ġ: ĠUn icorn Parameter < T > Ġ{ ĊĠĠĠ Ġval Ġnames : ĠList < String > ĊĠĠĠ Ġval Ġhelp : ĠString ĊĠĠĠ Ġval Ġmetavar : ĠString ? ĊĠĠĠ Ġval Ġhidden : ĠBoolean ĊĠĠĠ Ġval Ġenv var : ĠString ? ĊĊĠĠĠ Ġoverride Ġfun Ġprovide Delegate ( this Ref : ĠBase Command , Ġprop : ĠK Property < *> ): ĠReadOnly Property < Base Command , ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild ( this Ref ). provide Delegate ( this Ref , Ġprop ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild ( command : ĠBase Command ): ĠA Ċ } Ċ Ċ internal Ġtype alias ĠUn icorn Option With Values < All T , ĠEach T , ĠValue T > ĊĠĠĠĠĠĠĠ Ġ= ĠUn icorn Option < All T , ĠOption With Values < All T , ĠEach T , ĠValue T >> Ċ Ċ internal Ġtype alias ĠUn icorn Nullable Option < Each T , ĠValue T > Ġ= ĠUn icorn Option < Each T ?, ĠOption With Values < Each T ?, ĠEach T , ĠValue T >> Ċ internal Ġtype alias ĠUn icorn Raw Option Ġ= ĠUn icorn Nullable Option < String , ĠString > Ċ internal Ġtype alias ĠUn icorn Flag Option < T > Ġ= ĠUn icorn Option < T , ĠFlag Option < T >> ĊĊ Ċ fun Ġ< In T , ĠIn Ġ: ĠOption Delegate < In T >, ĠOut T , ĠOut Ġ: ĠOption Delegate < Out T >> ĠUn icorn Option < In T , ĠIn >. build Delegate ( ĊĠĠĠ Ġtransform : ĠIn . () Ġ-> ĠOut Ċ ): ĠUn icorn Option < Out T , ĠOut > Ġ= Ġobject Ġ: ĠUn icorn Option < Out T , ĠOut > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġnames Ġ= Ġthis @ build Delegate . names ĊĠĠĠ Ġoverride Ġval Ġhelp Ġ= Ġthis @ build Delegate . help ĊĠĠĠ Ġoverride Ġval Ġmetavar Ġ= Ġthis @ build Delegate . metav ar ĊĠĠĠ Ġoverride Ġval Ġhidden Ġ= Ġthis @ build Delegate . hidden ĊĠĠĠ Ġoverride Ġval Ġenv var Ġ= Ġthis @ build Delegate . env var ĊĊĠĠĠ Ġoverride Ġfun Ġbuild ( command : ĠBase Command ): ĠOut Ġ= Ġthis @ build Delegate . build ( command ). transform () Ċ } ĊĊ Ċ fun Ġoption ( ĊĠĠĠ Ġvar arg Ġnames : ĠString , ĊĠĠĠ Ġhelp : ĠString Ġ= Ġ"", ĊĠĠĠ Ġmetavar : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġhidden : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġenv var : ĠString ? Ġ= Ġnull Ċ ): ĠUn icorn Raw Option Ġ= Ġobject Ġ: ĠUn icorn Raw Option Ġ{ ĊĠĠĠ Ġoverride Ġval Ġnames Ġ= Ġnames . asList () ĊĠĠĠ Ġoverride Ġval Ġhelp Ġ= Ġhelp ĊĠĠĠ Ġoverride Ġval Ġmetavar Ġ= Ġmetavar ĊĠĠĠ Ġoverride Ġval Ġhidden Ġ= Ġhidden ĊĠĠĠ Ġoverride Ġval Ġenv var Ġ= Ġenv var ĊĊĠĠĠ Ġ@ Suppress (" Spread Operator ") ĊĠĠĠ Ġoverride Ġfun Ġbuild ( command : ĠBase Command ) Ġ= Ġcommand . option (* names , Ġhelp Ġ= Ġhelp ) Ċ } Ċ Ċ // Ġregion ĠTrans forms Ċ /** Ċ Ġ* ĠTransform Ġall Ġcalls Ġto Ġthe Ġoption Ġto Ġthe Ġfinal Ġoption Ġtype . Ċ Ġ* Ċ Ġ* ĠThe Ġinput Ġis Ġa Ġlist Ġof Ġcalls , Ġone Ġfor Ġeach Ġtime Ġthe Ġoption Ġappears Ġon Ġthe Ġcommand Ġline . ĠThe Ġvalues Ġin Ġthe Ċ Ġ* Ġlist Ġare Ġthe Ġoutput Ġof Ġcalls Ġto Ġ[ transform Values ]. ĠIf Ġthe Ġoption Ġdoes Ġnot Ġappear Ġfrom Ġany Ġsource Ġ( command Ċ Ġ* Ġline Ġor Ġenv var ), Ġthis Ġwill Ġbe Ġcalled Ġwith Ġan Ġempty Ġlist . Ċ Ġ* Ċ Ġ* ĠUsed Ġto Ġimplement Ġfunctions Ġlike Ġ[ default ] Ġand Ġ[ multiple ]. Ċ Ġ*/ Ċ fun Ġ< All T , ĠEach T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. transform All ( ĊĠĠĠ Ġtransform : ĠCalls Transformer < Each T , ĠAll T > Ċ ) Ġ= Ġbuild Delegate Ġ{ Ġtransform All ( transform Ġ= Ġtransform ) Ġ} Ċ Ċ /** Ċ Ġ* ĠIf Ġthe Ġoption Ġis Ġnot Ġcalled Ġon Ġthe Ġcommand Ġline Ġ( and Ġis Ġnot Ġset Ġin Ġan Ġenv var ), Ġuse Ġ[ value ] Ġfor Ġthe Ġoption . Ċ Ġ* Ċ Ġ* ĠThis Ġmust Ġbe Ġapplied Ġafter Ġall Ġother Ġtransforms . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠPair < Int , ĠInt > Ġby Ġoption (). int (). pair (). default ( 1 Ġto Ġ 2 ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. default ( value : ĠEach T ) Ġ= Ġbuild Delegate Ġ{ Ġdefault ( value ) Ġ} Ċ Ċ /** Ċ Ġ* ĠIf Ġthe Ġoption Ġis Ġnot Ġcalled Ġon Ġthe Ġcommand Ġline Ġ( and Ġis Ġnot Ġset Ġin Ġan Ġenv var ), Ġcall Ġthe Ġ[ value ] Ġand Ġuse Ġits Ċ Ġ* Ġreturn Ġvalue Ġfor Ġthe Ġoption . Ċ Ġ* Ċ Ġ* ĠThis Ġmust Ġbe Ġapplied Ġafter Ġall Ġother Ġtransforms . ĠIf Ġthe Ġoption Ġis Ġgiven Ġon Ġthe Ġcommand Ġline , Ġ[ value ] Ġwill Ċ Ġ* Ġnot Ġbe Ġcalled . Ċ Ġ* Ċ Ġ* ĠYou Ġcan Ġcustomize Ġhow Ġthe Ġdefault Ġis Ġshown Ġto Ġthe Ġuser Ġwith Ġ[ default For Help ]. ĠThe Ġdefault Ġvalue Ċ Ġ* Ġis Ġan Ġempty Ġstring , Ġso Ġif Ġyou Ġhave Ġthe Ġhelp Ġformatter Ġconfigured Ġto Ġshow Ġvalues , Ġyou Ġshould Ġset Ċ Ġ* Ġthis Ġvalue Ġmanually . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠPair < Int , ĠInt > Ġby Ġoption (). int (). pair (). default Lazy Ġ{ Ġexpensive Operation () Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. default Lazy ( ĊĠĠĠ Ġdefault For Help : ĠString Ġ= Ġ"", ĊĠĠĠ Ġvalue : Ġ() Ġ-> ĠEach T Ċ ) Ġ= Ġbuild Delegate Ġ{ Ġdefault Lazy ( default For Help , Ġvalue ) Ġ} Ċ Ċ /** Ċ Ġ* ĠIf Ġthe Ġoption Ġis Ġnot Ġcalled Ġon Ġthe Ġcommand Ġline Ġ( and Ġis Ġnot Ġset Ġin Ġan Ġenv var ), Ġthrow Ġa Ġ[ Missing Parameter ]. Ċ Ġ* Ċ Ġ* ĠThis Ġmust Ġbe Ġapplied Ġafter Ġall Ġother Ġtransforms . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠPair < Int , ĠInt > Ġby Ġoption (). int (). pair (). required () Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. required () Ġ= Ġbuild Delegate Ġ{ Ġrequired () Ġ} Ċ Ċ /** Ċ Ġ* ĠMake Ġthe Ġoption Ġreturn Ġa Ġlist Ġof Ġcalls ; Ġeach Ġitem Ġin Ġthe Ġlist Ġis Ġthe Ġvalue Ġof Ġone Ġcall . Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġoption Ġis Ġnever Ġcalled , Ġthe Ġlist Ġwill Ġbe Ġempty . ĠThis Ġmust Ġbe Ġapplied Ġafter Ġall Ġother Ġtransforms . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠList < Pair < Int , ĠInt >> Ġby Ġoption (). int (). pair (). multiple () Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġdefault ĠThe Ġvalue Ġto Ġuse Ġif Ġthe Ġoption Ġis Ġnot Ġsupplied . ĠDefaults Ġto Ġan Ġempty Ġlist . Ċ Ġ* Ġ@ param Ġrequired ĠIf Ġtrue , Ġ[ default ] Ġis Ġignored Ġand Ġ[ Missing Parameter ] Ġwill Ġbe Ġthrown Ġif Ġno Ċ Ġ* ĠĠ Ġinstances Ġof Ġthe Ġoption Ġare Ġpresent Ġon Ġthe Ġcommand Ġline . Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. multiple ( ĊĠĠĠ Ġdefault : ĠList < Each T > Ġ= Ġempty List (), ĊĠĠĠ Ġrequired : ĠBoolean Ġ= Ġfalse Ċ ) Ġ= Ġbuild Delegate Ġ{ Ġmultiple ( default , Ġrequired ) Ġ} Ċ Ċ /** Ċ Ġ* ĠMake Ġthe Ġ[ multiple ] Ġoption Ġreturn Ġa Ġunique Ġset Ġof Ġcalls Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠSet < Int > Ġby Ġoption (). int (). multiple (). unique () Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Option With Values < List < Each T >, ĠEach T , ĠValue T >. unique () Ġ= Ġbuild Delegate Ġ{ Ġunique () Ġ} ĊĊ Ċ /** Ċ Ġ* ĠChange Ġthe Ġnumber Ġof Ġvalues Ġthat Ġthis Ġoption Ġtakes . Ċ Ġ* Ċ Ġ* ĠThe Ġinput Ġwill Ġbe Ġa Ġlist Ġof Ġsize Ġ[ n values ], Ġwith Ġeach Ġitem Ġin Ġthe Ġlist Ġbeing Ġthe Ġoutput Ġof Ġa Ġcall Ġto Ċ Ġ* Ġ[ convert ]. Ġ[ n values ] Ġmust Ġbe Ġ 2 Ġor Ġgreater , Ġsince Ġoptions Ġcannot Ġtake Ġa Ġvariable Ġnumber Ġof Ġvalues , Ġand Ċ Ġ* Ġ[ option ] Ġhas Ġ[ n values ] Ġ= Ġ 1 Ġby Ġdefault . ĠIf Ġyou Ġwant Ġto Ġchange Ġthe Ġtype Ġof Ġan Ġoption Ġwith Ġone Ġvalue , Ġuse Ċ Ġ* Ġ[ convert ] Ġinstead . Ċ Ġ* Ċ Ġ* ĠUsed Ġto Ġimplement Ġfunctions Ġlike Ġ[ pair ] Ġand Ġ[ triple ]. ĠThis Ġmust Ġbe Ġapplied Ġbefore Ġany Ġother Ġtransforms . Ċ Ġ*/ Ċ fun Ġ< Each In T Ġ: ĠAny , ĠEach Out T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each In T , ĠValue T >. transform Values ( ĊĠĠĠ Ġn values : ĠInt , ĊĠĠĠ Ġtransform : ĠArgs Transformer < Value T , ĠEach Out T > Ċ ) Ġ= Ġbuild Delegate Ġ{ Ġtransform Values ( n values , Ġtransform ) Ġ} Ċ Ċ /** Ċ Ġ* ĠChange Ġto Ġoption Ġto Ġtake Ġtwo Ġvalues , Ġheld Ġin Ġa Ġ[ Pair ] Ċ Ġ* Ċ Ġ* ĠThis Ġmust Ġbe Ġcalled Ġafter Ġconverting Ġthe Ġvalue Ġtype , Ġand Ġbefore Ġother Ġtransforms . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠPair < Int , ĠInt >? Ġby Ġoption (). int (). pair () Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. pair () Ġ= Ġbuild Delegate Ġ{ Ġpair () Ġ} Ċ Ċ /** Ċ Ġ* ĠChange Ġto Ġoption Ġto Ġtake Ġthree Ġvalues , Ġheld Ġin Ġa Ġ[ Triple ] Ċ Ġ* Ċ Ġ* ĠThis Ġmust Ġbe Ġcalled Ġafter Ġconverting Ġthe Ġvalue Ġtype , Ġand Ġbefore Ġother Ġtransforms . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠTrip le < Int , ĠInt , ĠInt >? Ġby Ġoption (). int (). triple () Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. triple () Ġ= Ġbuild Delegate Ġ{ Ġtriple () Ġ} ĊĊ Ċ /** Ċ Ġ* ĠChange Ġto Ġoption Ġto Ġtake Ġany Ġnumber Ġof Ġvalues , Ġseparated Ġby Ġa Ġ[ regex ]. Ċ Ġ* Ċ Ġ* ĠThis Ġmust Ġbe Ġcalled Ġafter Ġconverting Ġthe Ġvalue Ġtype , Ġand Ġbefore Ġother Ġtransforms . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠList < Int >? Ġby Ġoption (). int (). split ( Regex ("," )) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠWhich Ġcan Ġbe Ġcalled Ġlike Ġthis : Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* Ġ./ program Ġ-- opt Ġ 1 , 2 , 3 Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. split ( regex : ĠRegex ) Ġ= Ġbuild Delegate Ġ{ Ġsplit ( regex ) Ġ} Ċ Ċ /** Ċ Ġ* ĠChange Ġto Ġoption Ġto Ġtake Ġany Ġnumber Ġof Ġvalues , Ġseparated Ġby Ġa Ġstring Ġ[ delimiter ]. Ċ Ġ* Ċ Ġ* ĠThis Ġmust Ġbe Ġcalled Ġafter Ġconverting Ġthe Ġvalue Ġtype , Ġand Ġbefore Ġother Ġtransforms . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt : ĠList < Int >? Ġby Ġoption (). int (). split ( Regex ("," )) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠWhich Ġcan Ġbe Ġcalled Ġlike Ġthis : Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* Ġ./ program Ġ-- opt Ġ 1 , 2 , 3 Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< Each T Ġ: ĠAny , ĠValue T > ĠUn icorn Nullable Option < Each T , ĠValue T >. split ( delimiter : ĠString ) Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġsplit ( delimiter ) Ġ} Ċ Ċ /** Ċ Ġ* ĠCheck Ġthe Ġfinal Ġargument Ġvalue Ġand Ġraise Ġan Ġerror Ġif Ġit 's Ġnot Ġvalid . Ċ Ġ* Ċ Ġ* ĠThe Ġ[ validator ] Ġis Ġcalled Ġwith Ġthe Ġfinal Ġargument Ġtype Ġ( the Ġoutput Ġof Ġ[ transform All ]), Ġand Ġshould Ġcall Ċ Ġ* Ġ` fail ` Ġif Ġthe Ġvalue Ġis Ġnot Ġvalid . Ċ Ġ* Ċ Ġ* ĠYou Ġcan Ġalso Ġcall Ġ` require ` Ġto Ġfail Ġautomatically Ġif Ġan Ġexpression Ġis Ġfalse . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt Ġby Ġargument (). int (). validate Ġ{ Ġrequire ( it Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ Ġ" value Ġmust Ġbe Ġeven " Ġ} Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< All T Ġ: ĠAny , ĠEach T , ĠValue T > ĠUn icorn Option With Values < All T , ĠEach T , ĠValue T >. validate ( ĊĠĠĠ Ġvalidator : ĠOption Validator < All T > Ċ ) Ġ= Ġbuild Delegate Ġ{ Ġvalidate ( validator ) Ġ} Ċ Ċ /** Ċ Ġ* ĠCheck Ġthe Ġfinal Ġargument Ġvalue Ġand Ġraise Ġan Ġerror Ġif Ġit 's Ġnot Ġvalid . Ċ Ġ* Ċ Ġ* ĠThe Ġ[ validator ] Ġis Ġcalled Ġwith Ġthe Ġfinal Ġargument Ġtype Ġ( the Ġoutput Ġof Ġ[ transform All ]), Ġand Ġshould Ġcall Ċ Ġ* Ġ` fail ` Ġif Ġthe Ġvalue Ġis Ġnot Ġvalid . ĠIt Ġis Ġnot Ġcalled Ġif Ġthe Ġdelegate Ġvalue Ġis Ġnull . Ċ Ġ* Ċ Ġ* ĠYou Ġcan Ġalso Ġcall Ġ` require ` Ġto Ġfail Ġautomatically Ġif Ġan Ġexpression Ġis Ġfalse . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt Ġby Ġargument (). int (). validate Ġ{ Ġrequire ( it Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ Ġ" value Ġmust Ġbe Ġeven " Ġ} Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ @ Jvm Name (" nullable Validate ") Ċ fun Ġ< All T Ġ: ĠAny , ĠEach T , ĠValue T > ĠUn icorn Option With Values < All T ?, ĠEach T , ĠValue T >. validate ( ĊĠĠĠ Ġvalidator : ĠOption Validator < All T > Ċ ) Ġ= Ġbuild Delegate Ġ{ Ġvalidate ( validator ) Ġ} ĊĊ Ċ /** Ċ Ġ* ĠMark Ġthis Ġoption Ġas Ġdeprecated Ġin Ġthe Ġhelp Ġoutput . Ċ Ġ* Ċ Ġ* ĠBy Ġdefault , Ġa Ġtag Ġis Ġadded Ġto Ġthe Ġhelp Ġmessage Ġand Ġa Ġwarning Ġis Ġprinted Ġif Ġthe Ġoption Ġis Ġused . Ċ Ġ* Ċ Ġ* ĠThis Ġshould Ġbe Ġcalled Ġafter Ġany Ġconversion Ġand Ġvalidation . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġopt Ġby Ġoption (). int (). validate Ġ{ Ġrequire ( it Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ Ġ" value Ġmust Ġbe Ġeven " Ġ} Ġ} Ċ Ġ* ĠĠĠ Ġ. deprecated (" WARNING : Ġ-- opt Ġis Ġdeprecated , Ġuse Ġ-- new - opt Ġinstead ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġmessage ĠThe Ġmessage Ġto Ġshow Ġin Ġthe Ġwarning Ġor Ġerror . ĠIf Ġnull , Ġno Ġwarning Ġis Ġissued . Ċ Ġ* Ġ@ param ĠtagName ĠThe Ġtag Ġto Ġadd Ġto Ġthe Ġhelp Ġmessage Ċ Ġ* Ġ@ param Ġtag Value ĠAn Ġextra Ġmessage Ġto Ġadd Ġto Ġthe Ġtag Ċ Ġ* Ġ@ param Ġerror ĠIf Ġtrue , Ġwhen Ġthe Ġoption Ġis Ġinvoked , Ġa Ġ[ Cli kt Error ] Ġis Ġraised Ġimmediately Ġinstead Ġof Ġiss uing Ġa Ġwarning . Ċ Ġ*/ Ċ fun Ġ< All T , ĠEach T , ĠValue T > ĠUn icorn Option With Values < All T , ĠEach T , ĠValue T >. deprecated ( ĊĠĠĠ Ġmessage : ĠString ? Ġ= Ġ"", ĊĠĠĠ ĠtagName : ĠString ? Ġ= Ġ" deprecated ", ĊĠĠĠ Ġtag Value : ĠString Ġ= Ġ"", ĊĠĠĠ Ġerror : ĠBoolean Ġ= Ġfalse Ċ ) Ġ= Ġbuild Delegate Ġ{ Ġdeprecated ( message , ĠtagName , Ġtag Value , Ġerror ) Ġ} Ċ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġoption Ġvalue Ġtype . Ċ Ġ* Ċ Ġ* ĠThe Ġ[ conversion ] Ġis Ġcalled Ġonce Ġfor Ġeach Ġvalue Ġin Ġeach Ġinvocation Ġof Ġthe Ġoption . ĠIf Ġany Ġerrors Ġare Ġthrown , Ċ Ġ* Ġthey Ġare Ġcaught Ġand Ġa Ġ[ Bad Parameter Value ] Ġis Ġthrown Ġwith Ġthe Ġerror Ġmessage . ĠYou Ġcan Ġcall Ġ` fail ` Ġto Ġthrow Ġa Ċ Ġ* Ġ[ Bad Parameter Value ] Ġmanually . Ċ Ġ* Ċ Ġ* Ġ@ param Ġmetavar ĠThe Ġmetavar Ġfor Ġthe Ġtype . ĠOver ridden Ġby Ġa Ġmetavar Ġpassed Ġto Ġ[ option ]. Ċ Ġ* Ġ@ param Ġenv var Split ĠIf Ġthe Ġvalue Ġis Ġread Ġfrom Ġan Ġenv var , Ġthe Ġpattern Ġto Ġsplit Ġthe Ġvalue Ġon . ĠThe Ġdefault Ċ Ġ* ĠĠ Ġsplits Ġon Ġwhitespace . ĠThis Ġvalue Ġis Ġcan Ġbe Ġoverridden Ġby Ġpassing Ġa Ġvalue Ġto Ġthe Ġ[ option ] Ġfunction . Ċ Ġ* Ġ@ param Ġcompletion Candidates Ġcandidates Ġto Ġuse Ġwhen Ġcomplet ing Ġthis Ġoption Ġin Ġshell Ġautocomplete Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Raw Option . convert ( ĊĠĠĠ Ġmetavar : ĠString Ġ= Ġ" VALUE ", ĊĠĠĠ Ġenv var Split : ĠRegex Ġ= ĠRegex ("\\ s + "), ĊĠĠĠ Ġcompletion Candidates : ĠCompletion Candidates ? Ġ= Ġnull , ĊĠĠĠ Ġconversion : ĠValue Transformer < T > Ċ ) Ġ= Ġbuild Delegate Ġ{ ĊĠĠĠ Ġif Ġ( completion Candidates Ġ!= Ġnull ) Ġconvert ( metav ar , Ġenv var Split , Ġcompletion Candidates , Ġconversion ) ĊĠĠĠ Ġelse Ġconvert ( metav ar , Ġenv var Split , Ġconversion Ġ= Ġconversion ) Ċ } Ċ Ċ /** Ċ Ġ* ĠIf Ġthe Ġoption Ġisn 't Ġgiven Ġon Ġthe Ġcommand Ġline , Ġprompt Ġthe Ġuser Ġfor Ġmanual Ġinput . Ċ Ġ* Ċ Ġ* Ġ@ param Ġtext ĠThe Ġtext Ġto Ġprompt Ġthe Ġuser Ġwith Ċ Ġ* Ġ@ param Ġdefault ĠThe Ġdefault Ġvalue Ġto Ġuse Ġif Ġno Ġinput Ġis Ġgiven . ĠIf Ġnull , Ġthe Ġprompt Ġwill Ġbe Ġrepeated Ġuntil Ċ Ġ* ĠĠ Ġinput Ġis Ġgiven . Ċ Ġ* Ġ@ param Ġhide Input ĠIf Ġtrue , Ġuser Ġinput Ġwill Ġnot Ġbe Ġshown Ġon Ġthe Ġscreen . ĠUseful Ġfor Ġpasswords Ġand Ġsensitive Ċ Ġ* ĠĠ Ġinput . Ċ Ġ* Ġ@ param Ġrequire Confirmation ĠIf Ġtrue , Ġthe Ġuser Ġwill Ġbe Ġrequired Ġto Ġenter Ġthe Ġsame Ġvalue Ġtwice Ġbefore Ġit Ġis Ċ Ġ* ĠĠ Ġaccepted . Ċ Ġ* Ġ@ param Ġconfirmation Prompt ĠIf Ġ[ require Confirmation ] Ġis Ġtrue , Ġthis Ġwill Ġbe Ġused Ġto Ġask Ġfor Ġinput Ġagain . Ċ Ġ* Ġ@ param Ġprompt Suffix ĠText Ġto Ġdisplay Ġdirectly Ġafter Ġ[ text ]. ĠDefaults Ġto Ġ": Ġ". Ċ Ġ* Ġ@ param Ġshow Default ĠShow Ġ[ default ] Ġto Ġthe Ġuser Ġin Ġthe Ġprompt . Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Nullable Option < T , ĠT >. prompt ( ĊĠĠĠ Ġtext : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġdefault : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġhide Input : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġrequire Confirmation : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġconfirmation Prompt : ĠString Ġ= Ġ" Repeat Ġfor Ġconfirmation : Ġ", ĊĠĠĠ Ġprompt Suffix : ĠString Ġ= Ġ": Ġ", ĊĠĠĠ Ġshow Default : ĠBoolean Ġ= Ġtrue Ċ ) Ġ= Ġbuild Delegate Ġ{ ĊĠĠĠ Ġprompt ( text , Ġdefault , Ġhide Input , Ġrequire Confirmation , Ġconfirmation Prompt , Ġprompt Suffix , Ġshow Default ) Ċ } Ċ // Ġend region Ċ Ċ // Ġregion ĠFlag Ċ /** Ċ Ġ* ĠTurn Ġan Ġoption Ġinto Ġa Ġboolean Ġflag . Ċ Ġ* Ċ Ġ* Ġ@ param Ġsecondary Names Ġadditional Ġnames Ġfor Ġthat Ġoption Ġthat Ġcause Ġthe Ġoption Ġvalue Ġto Ġbe Ġfalse . ĠIt 's Ġgood Ċ Ġ* ĠĠ Ġpractice Ġto Ġprovide Ġsecondary Ġnames Ġso Ġthat Ġusers Ġcan Ġdisable Ġan Ġoption Ġthat Ġwas Ġpreviously Ġenabled . Ċ Ġ* Ġ@ param Ġdefault Ġthe Ġvalue Ġfor Ġthis Ġproperty Ġif Ġthe Ġoption Ġis Ġnot Ġgiven Ġon Ġthe Ġcommand Ġline . Ċ Ġ*/ Ċ @ Suppress (" Spread Operator ") Ċ fun ĠUn icorn Raw Option . flag ( var arg Ġsecondary Names : ĠString , Ġdefault : ĠBoolean Ġ= Ġfalse ): ĠUn icorn Flag Option < Boolean > Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġflag (* secondary Names , Ġdefault Ġ= Ġdefault ) Ġ} Ċ Ċ /** Ċ Ġ* ĠTurn Ġan Ġoption Ġinto Ġa Ġflag Ġthat Ġcounts Ġthe Ġnumber Ġof Ġtimes Ġthe Ġoption Ġoccurs Ġon Ġthe Ġcommand Ġline . Ċ Ġ*/ Ċ fun ĠUn icorn Raw Option . count ed (): ĠUn icorn Flag Option < Int > Ġ= Ġbuild Delegate Ġ{ Ġcounted () Ġ} Ċ Ċ /** ĠTurn Ġan Ġoption Ġinto Ġa Ġset Ġof Ġflags Ġthat Ġeach Ġmap Ġto Ġa Ġvalue . Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Raw Option . switch ( choices : ĠMap < String , ĠT >): ĠUn icorn Flag Option < T ?> Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġswitch ( choices ) Ġ} Ċ Ċ /** ĠTurn Ġan Ġoption Ġinto Ġa Ġset Ġof Ġflags Ġthat Ġeach Ġmap Ġto Ġa Ġvalue . Ġ*/ Ċ @ Suppress (" Spread Operator ") Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Raw Option . switch ( var arg Ġchoices : ĠPair < String , ĠT >): ĠUn icorn Flag Option < T ?> Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġswitch (* choices ) Ġ} Ċ Ċ /** ĠSet Ġa Ġdefault Ġvalue Ġfor Ġa Ġoption . Ġ*/ Ċ @ Jvm Name (" flag Default ") Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Flag Option < T ?> . default ( value : ĠT ): ĠUn icorn Flag Option < T > Ġ= Ġbuild Delegate Ġ{ Ġdefault ( value ) Ġ} Ċ Ċ /** Ċ Ġ* ĠCheck Ġthe Ġfinal Ġoption Ġvalue Ġand Ġraise Ġan Ġerror Ġif Ġit 's Ġnot Ġvalid . Ċ Ġ* Ċ Ġ* ĠThe Ġ[ validator ] Ġis Ġcalled Ġwith Ġthe Ġfinal Ġoption Ġtype Ġ( the Ġoutput Ġof Ġ[ transform All ]), Ġand Ġshould Ġcall Ġ` fail ` Ċ Ġ* Ġif Ġthe Ġvalue Ġis Ġnot Ġvalid . ĠIt Ġis Ġnot Ġcalled Ġif Ġthe Ġdelegate Ġvalue Ġis Ġnull . Ċ Ġ*/ Ċ @ Jvm Name (" flag Validate ") Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Flag Option < T >. validate ( validator : ĠOption Validator < T >): ĠUn icorn Option < T , ĠOption Delegate < T >> Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġvalidate ( validator ) Ġ} Ċ // Ġend region Ċ Ċ // Ġregion ĠTypes Ċ /** ĠConvert Ġthe Ġargument Ġvalues Ġto Ġan Ġ` Int ` Ġ*/ Ċ fun ĠUn icorn Raw Option . int (): ĠUn icorn Nullable Option < Int , ĠInt > Ġ= Ġbuild Delegate Ġ{ Ġint () Ġ} Ċ Ċ /** ĠConvert Ġthe Ġargument Ġvalues Ġto Ġan Ġ` Long ` Ġ*/ Ċ fun ĠUn icorn Raw Option . long (): ĠUn icorn Nullable Option < Long , ĠLong > Ġ= Ġbuild Delegate Ġ{ Ġlong () Ġ} Ċ Ċ /** ĠConvert Ġthe Ġargument Ġvalues Ġto Ġan Ġ` Float ` Ġ*/ Ċ fun ĠUn icorn Raw Option . float (): ĠUn icorn Nullable Option < Float , ĠFloat > Ġ= Ġbuild Delegate Ġ{ Ġfloat () Ġ} Ċ Ċ /** ĠConvert Ġthe Ġargument Ġvalues Ġto Ġan Ġ` Double ` Ġ*/ Ċ fun ĠUn icorn Raw Option . double (): ĠUn icorn Nullable Option < Double , ĠDouble > Ġ= Ġbuild Delegate Ġ{ Ġdouble () Ġ} ĊĊ Ċ /** Ċ Ġ* ĠRe strict Ġthe Ġargument Ġvalues Ġto Ġfit Ġinto Ġa Ġrange . Ċ Ġ* Ċ Ġ* ĠBy Ġdefault , Ġconversion Ġfails Ġif Ġthe Ġvalue Ġis Ġoutside Ġthe Ġrange , Ġbut Ġif Ġ[ clamp ] Ġis Ġtrue , Ġthe Ġvalue Ġwill Ġbe Ċ Ġ* Ġsilently Ġclamp ed Ġto Ġfit Ġin Ġthe Ġrange . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġargument (). int (). restrict To ( max = 1 0 , Ġclamp = true ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< T > ĠUn icorn Nullable Option < T , ĠT >. restrict To ( min : ĠT ? Ġ= Ġnull , Ġmax : ĠT ? Ġ= Ġnull , Ġclamp : ĠBoolean Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ: ĠUn icorn Nullable Option < T , ĠT > Ġwhere ĠT Ġ: ĠNumber , ĠT Ġ: ĠComparable < T > Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġrestrict To ( min , Ġmax , Ġclamp ) Ġ} Ċ Ċ /** Ċ Ġ* ĠRe strict Ġthe Ġargument Ġvalues Ġto Ġfit Ġinto Ġa Ġrange . Ċ Ġ* Ċ Ġ* ĠBy Ġdefault , Ġconversion Ġfails Ġif Ġthe Ġvalue Ġis Ġoutside Ġthe Ġrange , Ġbut Ġif Ġ[ clamp ] Ġis Ġtrue , Ġthe Ġvalue Ġwill Ġbe Ċ Ġ* Ġsilently Ġclamp ed Ġto Ġfit Ġin Ġthe Ġrange . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġargument (). int (). restrict To ( 1 .. 1 0 , Ġclamp = true ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun Ġ< T > ĠUn icorn Nullable Option < T , ĠT >. restrict To ( range : ĠClosed Range < T >, Ġclamp : ĠBoolean Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġwhere ĠT Ġ: ĠNumber , ĠT Ġ: ĠComparable < T > Ġ= Ġbuild Delegate Ġ{ Ġrestrict To ( range , Ġclamp ) Ġ} ĊĊ Ċ private Ġfun Ġm var ( choices : ĠIterable < String >): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġchoices . join ToString ("| ", Ġprefix Ġ= Ġ"[", Ġpostfix Ġ= Ġ"] ") Ċ } Ċ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġoption Ġbased Ġon Ġa Ġfixed Ġset Ġof Ġvalues . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġoption (). choice ( map Of (" foo " Ġto Ġ 1 , Ġ" bar " Ġto Ġ 2 )) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ see Ġcom . github . aj alt . cli kt . parameters . groups . group Choice Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Raw Option . choice ( ĊĠĠĠ Ġchoices : ĠMap < String , ĠT >, ĊĠĠĠ Ġmetavar : ĠString Ġ= Ġm var ( choices . keys ) Ċ ): ĠUn icorn Nullable Option < T , ĠT > Ġ= Ġbuild Delegate Ġ{ Ġchoice ( choices , Ġmetavar ) Ġ} Ċ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġoption Ġbased Ġon Ġa Ġfixed Ġset Ġof Ġvalues . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġoption (). choice (" foo " Ġto Ġ 1 , Ġ" bar " Ġto Ġ 2 ) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ see Ġcom . github . aj alt . cli kt . parameters . groups . group Choice Ċ Ġ*/ Ċ @ Suppress (" Spread Operator ") Ċ fun Ġ< T Ġ: ĠAny > ĠUn icorn Raw Option . choice ( ĊĠĠĠ Ġvar arg Ġchoices : ĠPair < String , ĠT >, ĊĠĠĠ Ġmetavar : ĠString Ġ= Ġm var ( choices . map Ġ{ Ġit . first Ġ}) Ċ ): ĠUn icorn Nullable Option < T , ĠT > Ġ= Ġbuild Delegate Ġ{ Ġchoice (* choices , Ġmetavar Ġ= Ġmetavar ) Ġ} Ċ Ċ /** Ċ Ġ* ĠRe strict Ġthe Ġoption Ġto Ġa Ġfixed Ġset Ġof Ġvalues . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġoption (). choice (" foo ", Ġ" bar ") Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ @ Suppress (" Spread Operator ") Ċ fun ĠUn icorn Raw Option . choice ( ĊĠĠĠ Ġvar arg Ġchoices : ĠString , ĊĠĠĠ Ġmetavar : ĠString Ġ= Ġm var ( choices . as Iterable ()) Ċ ): ĠUn icorn Nullable Option < String , ĠString > Ġ= Ġbuild Delegate Ġ{ Ġchoice (* choices , Ġmetavar Ġ= Ġmetavar ) Ġ} Ċ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġoption Ġto Ġthe Ġvalues Ġof Ġan Ġenum . Ċ Ġ* Ċ Ġ* Ġ### ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġenum Ġclass ĠSize Ġ{ ĠSMALL , ĠL ARGE Ġ} Ċ Ġ* Ġoption (). enum < Size >() Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠA Ġblock Ġthat Ġreturns Ġthe Ġcommand Ġline Ġvalue Ġto Ġuse Ġfor Ġan Ġenum Ġvalue . ĠThe Ġdefault Ġis Ċ Ġ* ĠĠ Ġthe Ġenum Ġname . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠEnum < T >> ĠUn icorn Raw Option . enum ( ĊĠĠĠ Ġcross inline Ġkey : Ġ( T ) Ġ-> ĠString Ġ= Ġ{ Ġit . name Ġ} Ċ ): ĠUn icorn Nullable Option < T , ĠT > Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġenum ( key ) Ġ} ĊĊ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġargument Ġto Ġa Ġ[ File ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġexists ĠIf Ġtrue , Ġfail Ġif Ġthe Ġgiven Ġpath Ġdoes Ġnot Ġexist Ċ Ġ* Ġ@ param Ġfile Ok ay ĠIf Ġfalse , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġa Ġfile Ċ Ġ* Ġ@ param Ġfolder Ok ay ĠIf Ġfalse , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġa Ġdirectory Ċ Ġ* Ġ@ param Ġwritable ĠIf Ġtrue , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġnot Ġwritable Ċ Ġ* Ġ@ param Ġreadable ĠIf Ġtrue , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġnot Ġreadable Ċ Ġ*/ Ċ fun ĠUn icorn Raw Option . file ( ĊĠĠĠ Ġexists : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġfile Ok ay : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġfolder Ok ay : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġwritable : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġreadable : ĠBoolean Ġ= Ġfalse Ċ ): ĠUn icorn Nullable Option < File , ĠFile > Ġ= Ġbuild Delegate Ġ{ Ġfile ( exists , Ġfile Ok ay , Ġfolder Ok ay , Ġwritable , Ġreadable ) Ġ} Ċ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġargument Ġto Ġa Ġ[ Path ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġexists ĠIf Ġtrue , Ġfail Ġif Ġthe Ġgiven Ġpath Ġdoes Ġnot Ġexist Ċ Ġ* Ġ@ param Ġfile Ok ay ĠIf Ġfalse , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġa Ġfile Ċ Ġ* Ġ@ param Ġfolder Ok ay ĠIf Ġfalse , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġa Ġdirectory Ċ Ġ* Ġ@ param Ġwritable ĠIf Ġtrue , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġnot Ġwritable Ċ Ġ* Ġ@ param Ġreadable ĠIf Ġtrue , Ġfail Ġif Ġthe Ġgiven Ġpath Ġis Ġnot Ġreadable Ċ Ġ* Ġ@ param Ġfile System ĠIf Ġspecified , Ġthe Ġ[ FileSystem ] Ġwith Ġwhich Ġto Ġresolve Ġpaths . Ċ Ġ*/ Ċ fun ĠUn icorn Raw Option . path ( ĊĠĠĠ Ġexists : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġfile Ok ay : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġfolder Ok ay : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġwritable : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġreadable : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġfile System : ĠFileSystem Ġ= ĠFileSystem s . getDefault () Ċ ): ĠUn icorn Nullable Option < Path , ĠPath > Ġ= ĊĠĠĠ Ġbuild Delegate Ġ{ Ġpath ( exists , Ġfile Ok ay , Ġfolder Ok ay , Ġwritable , Ġreadable , Ġfile System ) Ġ} Ċ // Ġend region Ċ