package Ġb aa ah s . util Ċ Ċ interface ĠRef Count ed Ġ{ ĊĠĠĠ Ġfun Ġin Use (): ĠBoolean ĊĠĠĠ Ġfun Ġuse () ĊĠĠĠ Ġfun Ġdis use () ĊĠĠĠ Ġfun Ġon Release () Ċ } Ċ Ċ class ĠRef Counter Ġ: ĠRef Count ed Ġ{ ĊĠĠĠ Ġvar Ġref Count : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġin Use (): ĠBoolean Ġ= Ġref Count Ġ!= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġuse () Ġ{ ĊĠĠĠĠĠĠĠ Ġref Count ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdis use () Ġ{ ĊĠĠĠĠĠĠĠ Ġref Count -- ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ref Count Ġ< Ġ 0 ) Ġerror (" Too Ġmany Ġcalls Ġto Ġdis use (). ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! in Use ()) Ġon Release () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Release () Ġ{ ĊĠĠĠ Ġ} Ċ }