package Ġcom . kaz ak ago . sto ref low able . cacher Ċ Ċ /** Ċ Ġ* ĠA ĠC acher Ġclass Ġthat Ġsupports Ġpagination Ġin Ġone Ġdirection . Ċ Ġ* ĠOverride Ġthe Ġget Ġ/ Ġset Ġmethods Ġas Ġneeded . Ċ Ġ* Ċ Ġ* Ġ@ see Ġcom . kaz ak ago . sto ref low able . from Ċ Ġ*/ Ċ public Ġabstract Ġclass ĠPagination C acher < PARAM , ĠDATA > Ġ: ĠC acher < PARAM , ĠList < DATA >>() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnext Request Key Map Ġ= Ġmutable Map Of < PARAM , ĠString ?> () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġnext Ġdata Ġsaving Ġprocess Ġto Ġcache . ĊĠĠĠĠ Ġ* ĠYou Ġneed Ġto Ġmerge Ġcached Ġdata Ġ& Ġnew Ġfetched Ġnext Ġdata . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcached Data ĠCurrently Ġcached Ġdata . ĊĠĠĠĠ Ġ* Ġ@ param ĠnewData ĠData Ġto Ġbe Ġsaved . ĊĠĠĠĠ Ġ* Ġ@ param Ġparam ĠKey Ġto Ġget Ġthe Ġspecified Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġopen Ġsuspend Ġfun Ġsave Next Data ( cached Data : ĠList < DATA >, ĠnewData : ĠList < DATA >, Ġparam : ĠPARAM ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsave Data ( cached Data Ġ+ ĠnewData , Ġparam ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet ĠRequest Key Ġto ĠFetch Ġthe Ġnext Ġpagination Ġdata . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġparam ĠKey Ġto Ġget Ġthe Ġspecified Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġopen Ġsuspend Ġfun Ġload Next Request Key ( param : ĠPARAM ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnext Request Key Map [ param ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSave ĠRequest Key Ġto ĠFetch Ġthe Ġnext Ġpagination Ġdata . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Key Ġpagination Ġrequest Ġkey . ĊĠĠĠĠ Ġ* Ġ@ param Ġparam ĠKey Ġto Ġget Ġthe Ġspecified Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġopen Ġsuspend Ġfun Ġsave Next Request Key ( request Key : ĠString ?, Ġparam : ĠPARAM ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnext Request Key Map [ param ] Ġ= Ġrequest Key ĊĠĠĠ Ġ} Ċ } Ċ