package Ġhu . fit p uli . abe le Ċ Ċ import Ġhu . fit p uli . abe le . A be le . ASSERT Ċ import Ġhu . fit p uli . abe le . A be le . DEBUG Ċ import Ġhu . fit p uli . abe le . A be le . ERROR Ċ import Ġhu . fit p uli . abe le . A be le . INFO Ċ import Ġhu . fit p uli . abe le . A be le . VERBOSE Ċ import Ġhu . fit p uli . abe le . A be le . WARNING Ċ Ċ /** Ċ Ġ* ĠBase Ġclass Ġfor Ġprocessing Ġlogs . Ċ Ġ*/ Ċ abstract Ġclass ĠTree Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġwhen Ġ[ priority ] Ġwill Ġbe Ġlogged . ĠBehavior Ġis Ġundefined Ġfor Ġvalues Ġother Ġthan ĊĠĠĠĠ Ġ* Ġ[ A be le . ASSERT ], Ġ[ A be le . ERROR ], Ġ[ A be le . WARNING ], Ġ[ A be le . INFO ], Ġ[ A be le . DEBUG ] Ġor Ġ[ A be le . VERBOSE ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġis Log gable ( priority : ĠInt , Ġtag : ĠString ? Ġ= Ġnull ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġlog Ġwith Ġthe Ġgiven Ġ[ priority ] Ġand Ġoptional Ġ[ tag ], Ġ[ throwable ], Ġ[ message ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpriority Ġ- Ġlog Ġpriority Ġ([ ASSERT ], Ġ[ ERROR ], Ġ[ WARNING ], Ġ[ INFO ], Ġ[ DEBUG ] Ġor Ġ[ VERBOSE ]) ĊĠĠĠĠ Ġ* Ġ@ param Ġtag Ġ- Ġan Ġoptional Ġtag ĊĠĠĠĠ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġ- Ġoptional Ġlog Ġmessage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlog ( priority : ĠInt , Ġtag : ĠString ?, Ġthrowable : ĠThrowable ?, Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Log gable ( priority , Ġtag )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Log ( priority , Ġtag , Ġthrowable , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInvoke Ġonly Ġwhen Ġ[ is Log gable ] Ġhas Ġreturned Ġtrue . ĠThis Ġis Ġonly Ġfor Ġinternal Ġuse ! ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Published Api ĊĠĠĠ Ġinternal Ġfun Ġraw Log ( priority : ĠInt , Ġtag : ĠString ?, Ġthrowable : ĠThrowable ?, Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġperform Log ( priority , Ġtag , Ġthrowable , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPro cesses Ġa Ġlog Ġwith Ġthe Ġgiven Ġ[ priority ] Ġand Ġoptional Ġ[ tag ], Ġ[ throwable ], Ġ[ message ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpriority Ġ- Ġlog Ġpriority Ġ([ ASSERT ], Ġ[ ERROR ], Ġ[ WARNING ], Ġ[ INFO ], Ġ[ DEBUG ] Ġor Ġ[ VERBOSE ]) ĊĠĠĠĠ Ġ* Ġ@ param Ġtag Ġ- Ġan Ġoptional Ġtag ĊĠĠĠĠ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġ- Ġoptional Ġlog Ġmessage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġperform Log ( ĊĠĠĠĠĠĠĠ Ġpriority : ĠInt , ĊĠĠĠĠĠĠĠ Ġtag : ĠString ?, ĊĠĠĠĠĠĠĠ Ġthrowable : ĠThrowable ?, ĊĠĠĠĠĠĠĠ Ġmessage : ĠString ? ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġlazy Ġevaluated Ġlog Ġwith Ġthe Ġgiven Ġ[ priority ], Ġoptional Ġ[ throwable ] Ġand Ġa Ġlazy Ċ Ġ* Ġevaluated Ġ[ message ] Ġblock . Ċ Ġ* Ċ Ġ* Ġ@ param Ġpriority Ġ- Ġlog Ġpriority Ġ([ ASSERT ], Ġ[ ERROR ], Ġ[ WARNING ], Ġ[ INFO ], Ġ[ DEBUG ] Ġor Ġ[ VERBOSE ]) Ċ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] Ċ Ġ* Ġ@ param Ġmessage Ġ- Ġthe Ġlog Ġmessage Ġfactory Ġblock Ċ Ġ*/ Ċ inline Ġfun ĠTree . log ( priority : ĠInt , Ġthrowable : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( is Log gable ( priority , Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠ Ġraw Log ( priority , Ġnull , Ġthrowable , Ġmessage ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġlazy Ġevaluated Ġassert Ġlog . Ċ Ġ* Ċ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] Ċ Ġ* Ġ@ param Ġmessage Ġ- Ġthe Ġlog Ġmessage Ġfactory Ġblock Ċ Ġ*/ Ċ inline Ġfun ĠTree . assert ( throwable : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġlog ( ASSERT , Ġthrowable , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġlazy Ġevaluated Ġerror Ġlog . Ċ Ġ* Ċ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] Ċ Ġ* Ġ@ param Ġmessage Ġ- Ġthe Ġlog Ġmessage Ġfactory Ġblock Ċ Ġ*/ Ċ inline Ġfun ĠTree . error ( throwable : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġlog ( ERROR , Ġthrowable , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġlazy Ġevaluated Ġwarning Ġlog . Ċ Ġ* Ċ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] Ċ Ġ* Ġ@ param Ġmessage Ġ- Ġthe Ġlog Ġmessage Ġfactory Ġblock Ċ Ġ*/ Ċ inline Ġfun ĠTree . warn ( throwable : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġlog ( WARNING , Ġthrowable , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġlazy Ġevaluated Ġinfo Ġlog . Ċ Ġ* Ċ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] Ċ Ġ* Ġ@ param Ġmessage Ġ- Ġthe Ġlog Ġmessage Ġfactory Ġblock Ċ Ġ*/ Ċ inline Ġfun ĠTree . info ( throwable : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġlog ( INFO , Ġthrowable , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġlazy Ġevaluated Ġdebug Ġlog . Ċ Ġ* Ċ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] Ċ Ġ* Ġ@ param Ġmessage Ġ- Ġthe Ġlog Ġmessage Ġfactory Ġblock Ċ Ġ*/ Ċ inline Ġfun ĠTree . debug ( throwable : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġlog ( DEBUG , Ġthrowable , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġlazy Ġevaluated Ġverbose Ġlog . Ċ Ġ* Ċ Ġ* Ġ@ param Ġthrowable Ġ- Ġan Ġoptional Ġ[ Throwable ] Ċ Ġ* Ġ@ param Ġmessage Ġ- Ġthe Ġlog Ġmessage Ġfactory Ġblock Ċ Ġ*/ Ċ inline Ġfun ĠTree . verbose ( throwable : ĠThrowable ? Ġ= Ġnull , Ġmessage : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġlog ( VERBOSE , Ġthrowable , Ġmessage ) Ċ } Ċ