package Ġcom . un at xe . commons . data Ċ Ċ import Ġcom . un at xe . commons . utils . Either Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Call Adapter Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġjava . lang . reflect . Parameterized Type Ċ import Ġjava . lang . reflect . Type Ċ Ċ class ĠEither Call Adapter Factory Ġ: ĠCall Adapter . Factory () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget ( ĊĠĠĠĠĠĠĠ ĠreturnType : ĠType , ĊĠĠĠĠĠĠĠ Ġannotations : ĠArray < Annotation >, ĊĠĠĠĠĠĠĠ Ġretrofit : ĠRet rofit ĊĠĠĠ Ġ): ĠCall Adapter < *, Ġ* >? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( getRaw Type ( returnType ) Ġ!= ĠCall :: class . java ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġcheck ( returnType Ġis ĠParameter ized Type ) Ġ{ Ġ" Return Ġtype Ġmust Ġbe Ġa Ġparameter ized Ġtype ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Type Ġ= Ġget Parameter Upper Bound ( 0 , ĠreturnType ) ĊĠĠĠĠĠĠĠ Ġif Ġ( getRaw Type ( response Type ) Ġ!= ĠEither :: class . java ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġcheck ( response Type Ġis ĠParameter ized Type ) Ġ{ Ġ" Response Ġtype Ġmust Ġbe Ġa Ġparameter ized Ġtype ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Type Ġ= Ġget Parameter Upper Bound ( 0 , Ġresponse Type ) ĊĠĠĠĠĠĠĠ Ġif Ġ( getRaw Type ( left Type ) Ġ!= ĠApi Error :: class . java ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġright Type Ġ= Ġget Parameter Upper Bound ( 1 , Ġresponse Type ) ĊĠĠĠĠĠĠĠ Ġreturn ĠEither Call Adapter < Any >( right Type ) ĊĠĠĠ Ġ} Ċ }