package Ġcom . y br _ system . gener ics Ċ Ċ class ĠQueue < T >() Ġ{ ĊĠĠĠ Ġval Ġitem List : ĠMutable List < T > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġfun Ġenqueue ( item : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem List . add ( item ) ĊĠĠĠ Ġ} ĊĊĠĠ Ġfun Ġde queue (): ĠT ? Ġ{ ĊĠĠĠĠĠĠ Ġreturn Ġif ( item List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġitem List . remove At ( 0 ) ĊĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĠĠĠ Ġinline Ġfun Ġfilter ( predicate : Ġ( value : ĠT ) Ġ-> ĠBoolean ): ĠQueue < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Queue Ġ= ĠQueue < T >() ĊĠĠĠĠĠĠĠ Ġfor ( index Ġin Ġ 0 Ġuntil Ġitem List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġpredicate ( item List [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( element ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Queue . enqueue ( item List [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Queue ĊĠĠĠ Ġ} Ċ } ĊĊ