package Ġcom . oz od ru kh . android . pkg . installer Ċ Ċ /** Ċ Ġ* Ġ@ author ĠO z od ru kh Ċ Ġ*/ Ċ Ċ object ĠTim ber Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtrees : ĠArrayList < Tree > Ġ= Ġarray ListOf < Tree >() ĊĊĠĠĠ Ġfun Ġplant ( tree : ĠTree ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrees Ġ+= Ġtree ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġd ( tag : ĠString , Ġmessage : ĠString , Ġvar arg Ġargs : ĠAny Ġ= Ġempty Array ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrees . forEach Ġ{ Ġit . log ( LogLevel . DEBUG , Ġtag , Ġmessage , Ġnull , Ġ* args ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġi ( tag : ĠString , Ġmessage : ĠString , Ġvar arg Ġargs : ĠAny Ġ= Ġempty Array ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrees . forEach Ġ{ Ġit . log ( LogLevel . INFO , Ġtag , Ġmessage , Ġnull , Ġ* args ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġe ( tag : ĠString , Ġerror : ĠThrowable ?, Ġmessage : ĠString , Ġvar arg Ġargs : ĠAny Ġ= Ġempty Array ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrees . forEach Ġ{ Ġit . log ( LogLevel . ERROR , Ġtag , Ġmessage , Ġerror , Ġ* args ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠLogLevel Ġ{ ĊĠĠĠĠĠĠĠ ĠDEBUG , ĊĠĠĠĠĠĠĠ ĠINFO , ĊĠĠĠĠĠĠĠ ĠERROR ; ĊĊĠĠĠĠĠĠĠ Ġinternal Ġopen Ġfun Ġprint ( message : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println ("$ name Ġ-- Ġ$ message ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġclass ĠTree Ġ{ ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġlog ( level : ĠLogLevel , Ġtag : ĠString , Ġmessage : ĠString , Ġerror : ĠThrowable ?, Ġvar arg Ġargs : ĠAny ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠDebug Tree Ġ: ĠTree () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( level : ĠLogLevel , Ġtag : ĠString , Ġmessage : ĠString , Ġerror : ĠThrowable ?, Ġvar arg Ġargs : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlevel . print ("$ tag : Ġ${ String . format ( message , Ġargs )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror ?. let Ġ{ Ġlevel . print ( it . message !! ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ