package Ġcom . lambda . command Ċ Ċ import Ġcom . lambda . command . args .* Ċ import Ġcom . lambda . command . execute . Execute Option Ċ import Ġcom . lambda . command . execute . I Execute Event Ċ import Ġcom . lambda . command . utils . Builder Block Ċ import Ġcom . lambda . command . utils . Execute Block Ċ Ċ /** Ċ Ġ* ĠBuilder Ġfor Ġ[ Command ], Ġextend Ġthis Ġor Ġsubtype Ġof Ġthis Ċ Ġ* Ġto Ġbuild Ġa Ġcommand . ĠOr Ġextend Ġthis Ġto Ġadd Ġmore Ġarg Ġtypes . Ċ Ġ* Ċ Ġ* Ġ@ param ĠE ĠType Ġof Ġ[ I Execute Event ], Ġcan Ġbe Ġitself Ġor Ġits Ġsubtype Ċ Ġ* Ġ@ param Ġname Ġ( Optional ) ĠName Ġfor Ġthe Ġ[ Command ] Ċ Ġ* Ġ@ param Ġdescription Ġ( Optional ) ĠDescription Ġfor Ġthe Ġ[ Command ] Ċ Ġ*/ Ċ open Ġclass ĠCommand Builder < E Ġ: ĠI Execute Event >( ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġalias : ĠArray < out ĠString > Ġ= Ġempty Array (), ĊĠĠĠ Ġprivate Ġval Ġdescription : ĠString Ġ= Ġ" No Ġdescription ", Ċ ) Ġ: ĠLiteral Arg ( name , Ġalias ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinal Ġarguments Ġto Ġbe Ġused Ġfor Ġbuilding Ġthe Ġcommand ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġfinal Args Ġ= ĠArrayList < Final Arg < E >>() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Final Arg ], Ġadds Ġit Ġto Ġ[ final Args ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions Ġ( Optional ) Ġ[ Execute Option ] Ġused Ġto Ġcheck Ġbefore Ġinvoking Ġ[ block ] ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Execute Block ] Ġto Ġrun Ġon Ġinvoking ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġfun ĠAbstract Arg <* >. execute ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġoptions : ĠExecute Option < E >, ĊĠĠĠĠĠĠĠ Ġblock : ĠExecute Block < E > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute (" No Ġdescription ", Ġ* options , Ġblock Ġ= Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Final Arg ], Ġadds Ġit Ġto Ġ[ final Args ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġ( Optional ) ĠDescription Ġfor Ġthis Ġargument Ġcombination ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions Ġ( Optional ) Ġ[ Execute Option ] Ġused Ġto Ġcheck Ġbefore Ġinvoking Ġ[ block ] ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Execute Block ] Ġto Ġrun Ġon Ġinvoking ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġfun ĠAbstract Arg <* >. execute ( ĊĠĠĠĠĠĠĠ Ġdescription : ĠString Ġ= Ġ" No Ġdescription ", ĊĠĠĠĠĠĠĠ Ġvar arg Ġoptions : ĠExecute Option < E >, ĊĠĠĠĠĠĠĠ Ġblock : ĠExecute Block < E > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarg Ġ= ĠFinal Arg ( description , Ġoptions , Ġblock ) ĊĠĠĠĠĠĠĠ Ġthis . append ( arg ) ĊĠĠĠĠĠĠĠ Ġfinal Args . add ( arg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Boolean Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. boolean ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < Boolean > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( Boolean Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Enum Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠE ĠType Ġof ĠEnum ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun Ġ< re ified ĠE Ġ: ĠEnum < E >> ĠAbstract Arg <* >. enum ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < E > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( Enum Arg ( name , ĠE :: class . java ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Long Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. long ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < Long > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( Long Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Int Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. int ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < Int > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( Int Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Short Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. short ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < Short > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( Short Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Float Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. float ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < Float > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( Float Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Double Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. double ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < Double > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( Double Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Literal Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġalias ĠAlias Ġof Ġthis Ġliteral Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. literal ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġalias : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠLiteral Arg . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarg Ġ= ĠLiteral Arg ( name , Ġalias ) ĊĠĠĠĠĠĠĠ Ġthis . append ( arg ) ĊĠĠĠĠĠĠĠ Ġarg . block () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ String Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. string ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < String > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( String Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ G reedy String Arg ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName Ġof Ġthis Ġargument ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun ĠAbstract Arg <* >. gre edy ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < String > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg ( G reedy String Arg ( name ), Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp ends Ġa Ġ[ Abstract Arg ] Ġwith Ġtype Ġof Ġ[ T ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġ[ arg ] ĊĠĠĠĠ Ġ* Ġ@ param Ġarg ĠArgument Ġto Ġappend ĊĠĠĠĠ Ġ* Ġ@ param Ġblock Ġ[ Builder Block ] Ġto Ġapp ends Ġmore Ġarguments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Command Builder ĊĠĠĠ Ġprotected Ġinline Ġfun Ġ< T Ġ: ĠAny > ĠAbstract Arg <* >. arg ( ĊĠĠĠĠĠĠĠ Ġarg : ĠAbstract Arg < T >, ĊĠĠĠĠĠĠĠ Ġblock : ĠBuilder Block < T > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . append ( arg ) ĊĠĠĠĠĠĠĠ Ġarg . block ( arg . identifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAnnotation Ġto Ġmark Ġthe Ġbuilder Ġmethods ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Dsl Marker ĊĠĠĠ Ġprotected Ġannotation Ġclass ĠCommand Builder ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilt Ġthis Ġinto Ġa Ġ[ Command ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġbuild Command (): ĠCommand < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCommand ( name , Ġalias , Ġdescription , Ġfinal Args . to Typed Array (), Ġthis ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ