package Ġorg . j lang . kt _ config . impl ĊĊ Ċ class ĠLook ahead < T >( private Ġval Ġsize : ĠInt , Ġprivate Ġval Ġreader : ĠIterator < T >) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbuffer Ġ= ĠRing Buffer < T >( size ) ĊĊĠĠĠ Ġ// Ġprime Ġthe Ġlook ahead Ġbuffer ĊĠĠĠ Ġinit Ġ{ Ġrepeat ( size , Ġ{ Ġbuffer . add ( reader . next ()) Ġ}) Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠT Ġ= Ġbuffer . peek ( index ) ĊĊĠĠĠ Ġfun Ġconsume ( num Tokens : ĠInt Ġ= Ġ 1 ): ĠUnit Ġ{ Ġrepeat ( num Tokens , Ġ{ Ġshift () Ġ}) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshift () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . take () ĊĠĠĠĠĠĠĠ Ġbuffer . add ( reader . next ()) ĊĠĠĠ Ġ} Ċ } Ċ