package Ġcom . fire minder . android dic er ol ler . nodes Ċ Ċ import Ġcom . fire minder . android dic er ol ler . interfaces . Ast Node Ċ import Ġcom . fire minder . android dic er ol ler . interfaces . Ast Visitor Ċ import Ġcom . fire minder . android dic er ol ler . interfaces . Die Roll Holder Ċ import Ġcom . fire minder . android dic er ol ler . interfaces . Result Ċ Ċ class ĠRoll Operation Node ( private Ġval ĠnumberOf Rol ls : ĠInt , Ġprivate Ġval Ġdie Side s : ĠInt ): ĠAst Node (), ĠDie Roll Holder Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠAst Node Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoll Operation Node ( numberOf Rol ls , Ġdie Side s ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġresults . forEach Ġ{ Ġadd Roll ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpretty Print (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroll s (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġresults : ĠMutable List < Int > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġoverride Ġfun Ġhas Rol ls (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresults . isNotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġroll s (): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Roll ( roll : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresults . add ( roll ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccept ( visitor : ĠAst Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisitor . visit Roll Operation Node ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠnumberOf Rol ls (): ĠInt Ġ= ĠnumberOf Rol ls ĊĠĠĠ Ġfun Ġdie Side s (): ĠInt Ġ= Ġdie Side s ĊĊĠĠĠ Ġfun Ġexpression (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ numberOf Rol ls } d ${ die Side s () }" ĊĠĠĠ Ġ} Ċ Ċ }