package Ġpl . l uk as z . cul er . fg cs Ċ Ċ import Ġpl . l uk as z . cul er . data . Test Example Ċ import Ġpl . l uk as z . cul er . fg cs . controllers . CY K Controller Ċ import Ġpl . l uk as z . cul er . fg cs . controllers . Classification Controller Ċ import Ġpl . l uk as z . cul er . fg cs . controllers . Grammar Controller Ċ import Ġpl . l uk as z . cul er . fg cs . controllers . ParseTree Controller Ċ import Ġpl . l uk as z . cul er . fg cs . models . CY K Table Ċ import Ġpl . l uk as z . cul er . fg cs . models . Grammar Ċ import Ġpl . l uk as z . cul er . fg cs . models . reports . Final Result Ċ import Ġpl . l uk as z . cul er . fg cs . models . reports . Init Data Ċ import Ġpl . l uk as z . cul er . fg cs . models . trees . Multi Parse TreeNode Ċ import Ġpl . l uk as z . cul er . fuzzy . Interval F uzzy Number Ċ import Ġpl . l uk as z . cul er . settings . Settings Ċ import Ġpl . l uk as z . cul er . utils .* Ċ import Ġpl . l uk as z . cul er . vis . report . Reports Controller Ċ Ċ class ĠF G CS ( val Ġinput Set Ġ: ĠList < Test Example >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Grammar Ġ: ĠGram mar ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Set Ġ: ĠList < Test Example >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Iterations Ġ: ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Ġ: ĠSettings ) Ġ{ ĊĊĠĠĠ Ġ// important Ġcontrollers ĊĠĠĠ Ġlateinit Ġvar Ġgrammar Controller Ġ: ĠGram mar Controller ĊĠĠĠ Ġlateinit Ġvar Ġcy k Controller : ĠCY K Controller ĊĠĠĠ Ġlateinit Ġvar Ġparse Tree Controller : ĠParse Tree Controller ĊĠĠĠ Ġlateinit Ġvar Ġclassification Controller : ĠClassification Controller ĊĠĠĠ Ġlateinit Ġvar Ġbest Grammar : ĠGram mar ĊĠĠĠ Ġprivate Ġval Ġreports Controller Ġ= ĠReports Controller ( settings . reports Saver Factory ()) ĊĠĠĠ Ġprivate Ġvar Ġper fection Measure Ġ= ĠDouble . MIN _ VALUE ĊĠĠĠ Ġprivate Ġvar Ġiteration Num Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġsimulation StartTime Ġ= Ġ 0 L ĊĠĠĠ Ġprivate Ġvar Ġbest Examples Ġ= ĠlistOf < Example Analysis Result >() ĊĠĠĠ Ġ// consts ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" FG CS " ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġregion Ġpublic Ġmethods ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinfer Grammar (){ ĊĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ INIT ) ĊĠĠĠĠĠĠĠ Ġif (! init iate FG CS ()) Ġreturn Ġ// no Ġneed Ġfor Ġinference ĊĠĠĠĠĠĠĠ Ġif ( input Set == null ) Ġreturn Ġ// should Ġnot Ġhappen ĠÂ ¯ \_ ( ãĥĦ )_ / Â ¯ ĊĊĠĠĠĠĠĠĠ Ġ// if Ġnot , Ġlet 's Ġinfer ! ĊĠĠĠĠĠĠĠ Ġ// preprocess Ġinput Ġdata ĊĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ LEAR NING _ SET _ INIT ) ĊĠĠĠĠĠĠĠ Ġsort In Qu asi Lex ico graphic Order ( input Set ) ĊĊĠĠĠĠĠĠĠ Ġ// initial Ġassignments ĊĠĠĠĠĠĠĠ Ġsimulation StartTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġbest Grammar Ġ= Ġgrammar Controller . grammar . copy () ĊĠĠĠĠĠĠĠ Ġreports Controller . start Inference ( Init Data ( input Set , Ġtest Set , Ġmax Iterations , Ġsettings )) ĊĠĠĠĠĠĠĠ Ġ// iteration Ġloop ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// changing Ġiteration Ġvariables ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiteration StartTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiteration Num ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// reporting Ġand Ġlogging ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ ITER ATION _ START . format ( iteration Num )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreports Controller . start Iteration ( iteration Num ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// creative Ġprocess ! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ COVER ING _ STAGE . format ( iteration Num )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Set . forEach Ġ{ Ġparse And Cover Example ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// updating Ġall Ġexamples Ġwith Ġcreated Ġnew Ġrules ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ COVER ING _ PARAMS _ REFRESH . format ( iteration Num )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġparsed Examples Ġ= ĠRx Utils . compute Par alle ll y ( input Set , Ġ:: test Example ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Attributes ( parsed Examples ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// end - stage Ġ- Ġwith ering Ġand Ġparams Ġrefresh , Ġif Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ WIT HER ING _ STAGE . format ( iteration Num )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrule Refresh Needed Ġ= Ġwith er Rules () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrule Refresh Needed Ġ= Ġrule Refresh Needed Ġ|| Ġpost Process Grammar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( rule Refresh Needed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ WIT HER ING _ POST PROCESS _ REFRESH . format ( iteration Num )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparsed Examples Ġ= ĠRx Utils . compute Par alle ll y ( input Set , Ġ:: test Example ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Attributes ( parsed Examples ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// clear Ġgrammar Ġ- Ġconsider Ġif Ġneeded Ġevery Ġiteration ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ CLEAR ING _ GRAM MAR . format ( iteration Num )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Grammar () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// performance Ġtest Ġbefore Ġevaluation ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ PER FORMANCE _ TEST . format ( iteration Num )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparsed Examples Ġ= ĠRx Utils . compute Par alle ll y ( input Set , Ġ:: test Example ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// saving Ġbest Ġgrammar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Measure Ġ= Ġsettings . grammar Per fection Measure . getDouble Measure ( grammar Controller . grammar , Ġparsed Examples ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( current Measure Ġ>= Ġper fection Measure ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbest Grammar Ġ= Ġgrammar Controller . grammar . copy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbest Examples Ġ= Ġparsed Examples ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġper fection Measure Ġ= Ġcurrent Measure ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// iteration Ġend Ġand Ġlogging ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiteration Time Ġ= ĠSystem . currentTimeMillis () Ġ- Ġiteration StartTime ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ ITER ATION _ FINISHED . format ( iteration Num , Ġper fection Measure , Ġiteration Time )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreports Controller . finish Iteration ( grammar Controller . grammar , Ġparsed Examples , Ġcurrent Measure , Ġiteration Time ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// iteration Ġcan Ġbe Ġalso Ġinterrupted Ġby Ġtimeout ĊĠĠĠĠĠĠĠ Ġ} Ġwhile (( max Iterations != null Ġ&& Ġiteration Num < max Iterations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! settings . grammar Per fection Measure . is Grammar Per fect ( current Measure )) ĠĠĠĠĠĠ Ġ// are Ġwe Ġperfect Ġyet ? Ġ à ¼ ¼ Ġ ãģ¤ ĠâĹ ķ _ âĹ ķ Ġ à ¼ ½ ãģ¤ ĊĊĠĠĠĠĠĠĠ Ġfinalize Inference () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfinalize Inference (){ ĊĠĠĠĠĠĠĠ Ġ// ok , Ġinference Ġis Ġdone , Ġso Ġwe Ġare Ġsetting Ġbest Ġgrammar ĊĠĠĠĠĠĠĠ Ġgrammar Controller . grammar Ġ= Ġbest Grammar ĊĊĠĠĠĠĠĠĠ Ġ// finish ing Ġstuff ĊĠĠĠĠĠĠĠ Ġval Ġsimulation Time Ġ= ĠSystem . currentTimeMillis () Ġ- Ġsimulation StartTime ĊĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ BEST GRAM MAR _ FINISHED . format ( per fection Measure , Ġsimulation Time )) ĊĠĠĠĠĠĠĠ Ġreports Controller . finish Inference ( Final Result ( iteration Num , best Grammar , best Examples , per fection Measure , simulation Time )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġverify Performance (){ ĊĠĠĠĠĠĠĠ Ġ// it 's Ġtime Ġto d Ġface Ġthe Ġtruth ĊĠĠĠĠĠĠĠ Ġif (! :: grammar Controller . isInitialized ) Ġreturn Ġ Ġ// something Ġwent Ġwrong ĊĊĠĠĠĠĠĠĠ Ġval Ġproper Test Set Ġ: ĠList < Test Example > Ġ= Ġtest Set Ġ?: Ġ( input Set Ġ?: Ġreturn ) Ġ// oo ops ... ĊĊĠĠĠĠĠĠĠ Ġval Ġexample List Ġ= ĠRx Utils . compute Par alle ll y ( proper Test Set , Ġ:: test Example ) ĊĊĠĠĠĠĠĠĠ Ġfor ( example Ġin Ġexample List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfuzzy Class Ġ= Ġexample . multi Parse TreeNode . classification Membership ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcr isp Class Ġ= Ġclassification Controller . get Cr isp Classification ( example . multi Parse TreeNode ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ"${ example . example . sequence }: Ġ$ fuzzy Class Ġ- Ġ$ cr isp Class ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreports Controller . finish Verification ( example List ) ĊĊĠĠĠĠĠĠĠ Ġ// Examples He atmap Visualization ( grammar Controller , Ġclassification Controller , Ġsettings , Ġexample List ). save ToFile (" heatmap . html ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġregion Ġprivate Ġmethods ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsort In Qu asi Lex ico graphic Order ( examples To Sort Ġ: ĠList < Test Example >) Ġ{ ĊĠĠĠĠĠĠĠ Ġexamples To Sort . sorted With ( object Ġ: ĠComparator < Test Example > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompare ( e 1 : ĠTest Example , Ġe 2 : ĠTest Example ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e 1 . size Ġ< Ġe 2 . size ) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e 1 . size Ġ> Ġe 2 . size ) Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġe 1 . parsed Sequence . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsymbol Comp Ġ= Ġe 1 . parsed Sequence [ i ]. symbol . compareTo ( e 2 . parsed Sequence [ i ]. symbol ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( symbol Comp == 0 ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsymbol Comp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Attributes ( examples Ġ: List < Example Analysis Result >) Ġ= Ġsettings . membership Assign er . assign Membership s ( parse Tree Controller , Ġgrammar Controller , Ġexamples ) ĊĊĠĠĠ Ġprivate Ġfun Ġwith er Rules () Ġ= Ġsettings . with ering Selector . apply With ering ( grammar Controller ) ĊĊĠĠĠ Ġprivate Ġfun Ġpost Process Grammar () Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . i ( TAG , ĠF G CS _ POST PROCESS ING _ STAGE . format ( iteration Num )) ĊĠĠĠĠĠĠĠ Ġreturn Ġsettings . grammar Post Processor . apply Operators ( grammar Controller ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Grammar (){ ĊĠĠĠĠĠĠĠ Ġgrammar Controller . remove Un reachable And Un product ive Rules () ĊĠĠĠĠĠĠĠ Ġgrammar Controller . remove Unused Symbols () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitiate FG CS () Ġ: ĠBoolean { ĊĠĠĠĠĠĠĠ Ġ// ok Ġwe Ġhave Ġgrammar Ġon Ġinput , Ġno Ġneed Ġfor Ġinference Ġ:( ĊĠĠĠĠĠĠĠ Ġgrammar Controller Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Grammar != null Ġ-> ĠGram mar Controller ( settings , Ġinput Grammar , ĠtestData Ġ= Ġtest Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Set == null Ġ-> Ġreturn Ġfalse Ġ// if Ġthere Ġis Ġno Ġinput Ġgrammar Ġand Ġinput Ġset Ġ- Ġwe Ġhave Ġnothing Ġto Ġdo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGram mar Controller ( settings , Ġinput Set , ĠtestData Ġ= Ġtest Set ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// everything Ġis Ġfine , Ġlets Ġrock ĊĠĠĠĠĠĠĠ Ġcy k Controller Ġ= ĠCY K Controller ( grammar Controller ) ĊĠĠĠĠĠĠĠ Ġparse Tree Controller Ġ= ĠParse Tree Controller ( grammar Controller , Ġcy k Controller ) ĊĠĠĠĠĠĠĠ Ġclassification Controller Ġ= Ġ ĠClassification Controller ( grammar Controller , Ġsettings ) ĊĠĠĠĠĠĠĠ Ġgrammar Controller . reports Controller Ġ= Ġreports Controller ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput Grammar == null Ġ// if Ġthere Ġis Ġno Ġinput Ġgrammar , Ġwe Ġhave Ġto Ġinfer Ġit Ġx ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse And Cover Example ( example : ĠTest Example ){ ĊĠĠĠĠĠĠĠ Ġif ( example . explicit Membership . mid point Ġ<= Ġsettings . cover ing Threshold Ġ?: Ġ 0 . 0 ) Ġreturn Ġ// if Ġbelow Ġthreshold , Ġthen Ġwe Ġare Ġignoring ĊĠĠĠĠĠĠĠ ĠLogger . d ( TAG , ĠF G CS _ COVER ING _ EXAMPLE . format ( example . sequence )) ĊĠĠĠĠĠĠĠ Ġval Ġexample Table Ġ= ĠCY K Table ( example ) ĠĠĠ Ġ// we Ġare Ġcreating Ġcy k Ġtable Ġfor Ġexample ĊĠĠĠĠĠĠĠ Ġcy k Controller . fill CY K Table ( example Table ) ĊĠĠĠĠĠĠĠ Ġif ( cy k Controller . is Example Parsed ( example Table )) Ġreturn Ġ// nothing Ġto Ġdo Ġhere Ġ@ TODO Ġsmall Ġchance Ġfor Ġcreation Ġof Ġadditional Ġones ĊĊĠĠĠĠĠĠĠ Ġsettings . cover ing Factory ( example Table , Ġgrammar Controller , Ġcy k Controller , Ġparse Tree Controller ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Example ( example : ĠTest Example ) Ġ: ĠExample Analysis Result { ĊĠĠĠĠĠĠĠ Ġval Ġexample Table Ġ= ĠCY K Table ( example ) ĠĠĠ Ġ// we Ġare Ġcreating Ġcy k Ġtable Ġfor Ġexample ĊĠĠĠĠĠĠĠ Ġcy k Controller . fill CY K Table ( example Table ) ĠĠĠ Ġ// ... fill Ġit ... ĊĠĠĠĠĠĠĠ Ġval Ġparse Tree Ġ= Ġparse Tree Controller . get Multi ParseTree From CY K ( example Table ) Ġ Ġ// ... create Ġtree Ġusing Ġit ... ĊĠĠĠĠĠĠĠ Ġclassification Controller . assign Classification Membership ( parse Tree ) Ġ// ... and Ġtag Ġit ! ĊĠĠĠĠĠĠĠ Ġclassification Controller . assign Re levance ( parse Tree ) ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// assign ing Ġre levance ĊĊĠĠĠĠĠĠĠ Ġ// ok , Ġso Ġlets Ġcollect Ġwhat Ġwe Ġgot Ġ:) ĊĠĠĠĠĠĠĠ Ġreturn ĠExample Analysis Result ( example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexample Table , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Tree , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Tree . classification Membership , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclassification Controller . get Cr isp Classification ( parse Tree )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinner Ġclasses ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠExample Analysis Result ( val Ġexample : ĠTest Example , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Ġ: ĠCY K Table , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmulti Parse TreeNode : ĠMulti Parse TreeNode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfuzzy Classification Ġ: ĠInterval F uzzy Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcr isp Classification Ġ: ĠBoolean ) ĊĠĠĠ Ġ// endregion Ċ }