package Ġst aks Ċ Ċ import Ġjavax . xml . stream . X MLE vent Reader Ċ Ċ /** Ċ Ġ* ĠBasic Ġclass Ġwhich Ġdescribes Ġhandler , Ġwhich Ġis Ġbuilt Ġfrom Ġanother Ġhandlers . Ċ Ġ*/ Ċ abstract Ġclass ĠCompound Handler < T > Ġ: ĠHandler < T > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChild Ġhandlers Ġof Ġcurrent Ġcompound Ġhandler . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġchildren Ġ= Ġhash Set Of < Handler <* >>() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġevery ĠCompound Handler Ġshould Ġhave Ġaccess Ġto ĠX MLE vent Reader Ġbecause Ġit Ġwill Ġpotentially Ġpass Ġit Ġto Ġchild ĊĠĠĠĠ Ġ* Ġfor Ġhandling . ĊĠĠĠĠ Ġ* ĠAdded Ġfor Ġext ensibility . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġreader : ĠX MLE vent Reader ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEvery Ġchild Ġshould Ġbe Ġregistered Ġfor Ġus Ġto Ġbe Ġable Ġto Ġpass Ġhandling Ġto Ġit Ġif Ġit Ġshould Ġbe Ġdone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< R Ġ: ĠHandler <* >> Ġregister Child ( child : ĠR ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġchildren . add ( child ) ĊĠĠĠĠĠĠĠ Ġreturn Ġchild ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSometimes Ġwe Ġneed Ġto Ġwrap Ġone Ġdelegate Ġwith Ġanother ĠâĢĶ Ġfor Ġexample Ġif Ġunderlying Ġdelegate 's Ġdata ĊĠĠĠĠ Ġ* Ġshould Ġbe Ġtransformed Ġsomehow . ĊĠĠĠĠ Ġ* ĠIt Ġshould Ġbe Ġachieved Ġwith Ġdecor ate Ġcall . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< DE COR ATOR Ġ: ĠContainer Handler < *, Ġ* >> Ġdecor ate ( child : ĠDE COR ATOR ): ĠDE COR ATOR Ġ{ ĊĠĠĠĠĠĠĠ Ġchildren . remove ( child . child ) ĊĠĠĠĠĠĠĠ Ġchildren . add ( child ) ĊĠĠĠĠĠĠĠ Ġreturn Ġchild ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġhandler Ġas Ġoptional . ĠBy Ġdefault Ġif Ġresult Ġis Ġ` null ` Ġexception Ġwill Ġbe Ġthrown . ĠOptional Ġhandler Ġwill ĊĠĠĠĠ Ġ* Ġreturn Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< Z Ġ: ĠAny > ĠHandler < Z >. optional () Ġ= Ġdecor ate ( Optional Handler ( this )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġunderlying Ġhandler 's Ġresult Ġto Ġint Ġor Ġthrows ĠException . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠHandler < String >. int () Ġ= Ġdecor ate ( Int Handler ( this )) Ċ Ċ } ĊĊ