/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠToast ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġ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 Ġcom . toast tab . animal sn iffer Ċ Ċ import Ġorg . codehaus . mojo . animal _ sn iffer . Clazz Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ class ĠMutable Signatures Ġ{ ĊĠĠĠ Ġprivate Ġval Ġclasses : ĠMutable Map < String , ĠCl azz > Ġ= Ġhash Map Of () ĊĊĠĠĠ Ġconstructor ( initial : ĠSequence < Clazz >) Ġ{ ĊĠĠĠĠĠĠĠ Ġinitial . associate By To ( classes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( cl z : ĠCl azz ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclasses . merge ( cl z . name , Ġcl z ) Ġ{ ĠoldValue , ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠsuperClass Ġ= Ġwhen Ġ( newValue . super Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" java / lang / Object " Ġ-> ĠoldValue . super Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoldValue . super Class Ġ-> ĠoldValue . super Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" conflict ing Ġsuper classes Ġ${ oldValue . super Class } Ġand Ġ${ newValue . super Class } Ġfor Ġ${ cl z . name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠCl azz ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcl z . name , ĠoldValue . signatures Ġ+ ĠnewValue . signatures , ĠsuperClass , Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( oldValue . super Interfaces . toSet () Ġ+ ĠnewValue . super Interfaces ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclasses (): ĠSequence < Clazz > Ġ= Ġclasses . values . as Sequence () Ċ }