package Ġio . github . aj oz . capability . design issues Ċ Ċ /* Ċ ĠAnother Ġthing Ġthat Ġalways Ġboth ers Ġme Ġis Ġthe Ġorder Ġin Ġwhich Ċ Ġthe Ġmethods Ġshould Ġbe Ġcalled . ĠOn Ġthe Ġsurface Ġlevel Ġof Ġthe Ċ ĠAPI Ġit Ġis Ġnot Ġclear Ġwhen Ġa Ġmethod Ġcan Ġor Ġcannot Ġbe Ġcalled Ċ Ġmost Ġof Ġthe Ġtime . ĊĊ ĠWe Ġoften Ġhave Ġclasses Ġthat Ġhave Ġmethods Ġthat Ġcan Ġbe Ġcalled Ċ Ġonly Ġonce Ġor Ġcan Ġbe Ġcalled Ġif Ġother Ġmethods Ġwere Ġcalled Ġfirst . ĊĊ ĠThis Ġmakes Ġthings Ġa Ġbit Ġproblematic Ġas Ġin Ġthe Ġusual Ġo op Ġworld Ċ Ġof Ġjava , Ġkotlin , Ġc #, Ġcpp Ġor Ġany Ġmain stream Ġlanguages Ġyou Ġjust Ċ Ġcannot Ġsay Ġanything Ġabout Ġthe Ġtiming Ġjust Ġlooking Ġat Ġthe Ġclass Ċ Ġinterface . ĊĊ ĠAt Ġleast Ġnot Ġwithout Ġover ly Ġcomp lic ating Ġthe Ġdesign ? Ċ Ġ*/ Ċ Ċ class ĠFoo Ġ{ ĊĠĠĠ Ġfun Ġinitialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġshould Ġbe Ġcalled Ġbefore Ġusing Ġthe Ġclass ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrelease () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġshould Ġbe Ġcalled Ġafter Ġusing Ġthe Ġclass ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġsome Ġother Ġimportant Ġmethods Ġhere ... Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġfoo Ġ= ĠFoo () ĊĠĠĠ Ġ// Ġalthough Ġwe 've Ġcreated ĠFoo Ġwe Ġcannot Ġuse Ġit Ġ:( ĊĠĠĠ Ġ// Ġbut Ġnothing Ġin Ġthis Ġworld Ġprevents Ġus Ġfrom Ġit ĊĠĠĠ Ġfoo . initialize () ĊĠĠĠ Ġ// Ġnow Ġwe Ġcan Ġuse Ġit Ġwithout Ġa Ġsudden Ġruntime Ġexception ĊĠĠĠ Ġ// Ġas Ġsoon Ġas Ġwe Ġrelease ĠFoo Ġwe Ġcannot Ġuse Ġit Ġ:( ĊĠĠĠ Ġfoo . release () ĊĠĠĠ Ġ// Ġbut Ġnothing Ġin Ġthis Ġworld Ġprevents Ġus Ġfrom Ġit Ċ } ĊĊĊ