package Ġorg . ja vers . core Ċ Ċ import Ġmu . K Logging Ċ import Ġorg . ja vers . core . commit . Commit Id Ċ import Ġjava . util . UUID Ċ import Ġjava . util . function . Supplier Ċ import Ġkotlin . math . abs Ċ Ċ /** Ċ Ġ* ĠRandom Commit Generator Ċ Ġ* Ċ Ġ* Ġ@ author Ġdeb op Ċ Ġ* Ġ@ since Ġ 1 9 . Ġ 7 . Ġ 1 5 Ċ Ġ*/ Ċ class ĠRandom Commit Generator Ġ: ĠSupplier < Commit Id > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġprivate Ġval Ġcommits Ġ= Ġhash Map Of < Commit Id , ĠInt >() ĊĠĠĠ Ġprivate Ġvar Ġcounter : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġget Seq ( commit Id : ĠCommit Id ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġcommits [ commit Id ] Ġ?: Ġthrow ĠNoSuch ElementException (" Not Ġfound Ġcommit Id . Ġ$ commit Id ") ĊĊĠĠĠ Ġoverride Ġfun Ġget (): ĠCommit Id Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= ĠCommit Id ( abs ( UUID . randomUUID (). least Sign ificant Bits ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommits [ next ] Ġ= Ġcounter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . trace Ġ{ Ġ" Generate Ġrandom m ĠCommit Id . Ġnext Ġcommit Id =$ next , Ġcounter =$ counter " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }