/* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ċ Ġ* Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ċ Ġ* Ġwith Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ċ Ġ* Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ċ Ġ* Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY Ċ Ġ* ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ċ Ġ* Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . apache . t inker pop 4 . gre mlin . structure . io Ċ Ċ import Ġorg . apache . t inker pop 4 . gre mlin . structure . Graph Ċ import Ġorg . apache . t inker pop 4 . gre mlin . structure . io . graph son . Graph SON Io Ċ import Ġorg . apache . t inker pop 4 . gre mlin . structure . io . gr yo . G ry o Io Ċ import Ġorg . jav at uples . Pair Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . Arrays Ċ import Ġjava . util . Collections Ċ import Ġjava . util . HashMap Ċ import Ġjava . util . List Ċ import Ġjava . util . Map Ċ import Ġjava . util . stream . Collectors Ċ Ċ /** Ċ Ġ* ĠA Ġgeneral ized Ġcustom Ġserializer Ġregistry Ġfor Ġproviders Ġimplementing Ġa Ġ[ Graph ]. Ġ ĠPro viders Ġshould Ġdevelop Ġan Ċ Ġ* Ġimplementation Ġof Ġthis Ġinterface Ġif Ġtheir Ġimplementation Ġrequires Ġcustom Ġserialization Ġof Ġidentifiers Ġor Ġother Ċ Ġ* Ġsuch Ġcontent Ġhouse d Ġin Ġtheir Ġgraph . Ġ ĠConsider Ġextending Ġfrom Ġ[ Abstract Io Registry ] Ġand Ġensure Ġthat Ġthe Ċ Ġ* Ġimplementation Ġhas Ġa Ġzero - arg Ġconstructor Ġor Ġa Ġstatic Ġ" instance " Ġmethod Ġthat Ġreturns Ġan Ġ` Io Registry ` Ċ Ġ* Ġinstance , Ġas Ġimplementations Ġmay Ġneed Ġto Ġbe Ġconstructed Ġfrom Ġreflection Ġgiven Ġdifferent Ġparts Ġof Ġthe ĠT inker Pop Ċ Ġ* Ġstack . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThe Ġserializers Ġto Ġregister Ġdepend Ġon Ġthe Ġ[ Io ] Ġimplementations Ġthat Ġare Ġexpected Ġto Ġbe Ġsupported . Ġ ĠThere Ċ Ġ* Ġare Ġcurrently Ġtwo Ġcore Ġimplementations Ġin Ġ[ G ry o Io ] Ġand Ġ[ Graph SON Io ]. Ġ ĠBoth Ġof Ġthese Ġshould Ġbe Ġsupported Ċ Ġ* Ġfor Ġfull Ġcompliance Ġwith Ġthe Ġtest Ġsuite . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThere Ġis Ġno Ġneed Ġto Ġuse Ġthis Ġclass Ġif Ġthe Ġ[ Graph ] Ġdoes Ġnot Ġhave Ġcustom Ġclasses Ġthat Ġrequire Ġserialization . Ċ Ġ* Ċ Ġ* Ġ@ author ĠSte phen ĠM allet te Ġ( http :// ste phen . gen op ri me . com ) Ċ Ġ*/ Ċ interface ĠIo Registry Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFind Ġa Ġlist Ġof Ġall Ġthe Ġserializers Ġregistered Ġto Ġan Ġ[ Io ] Ġclass Ġby Ġthe Ġ[ Graph ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind ( builder Class : ĠClass < out ĠIo ?> ?): ĠList < Pair < Class ?, ĠObject ?> ?> ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFind Ġa Ġlist Ġof Ġall Ġthe Ġserializers , Ġof Ġa Ġparticular Ġtype , Ġregistered Ġto Ġan Ġ[ Io ] Ġclass Ġby Ġthe ĊĠĠĠĠ Ġ* Ġ[ Graph ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< S > Ġfind ( builder Class : ĠClass < out ĠIo ?> ?, Ġserializer Type : ĠClass < S >? ): ĠList < Pair < Class ?, ĠS > ?> ? ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIO _ REGISTRY Ġ= Ġ" gre mlin . io . registry " ĊĠĠĠ Ġ} Ċ }