package Ġdev . tu ong nt . t inder . data . api . impl Ċ Ċ import Ġdev . tu ong nt . t inder . data . api . Network Failure Dispatcher Ċ import Ġdev . tu ong nt . t inder . domain . Result Ċ 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 ĠResult Call Adapter Factory ( private Ġval Ġfailure Dispatcher : ĠNetwork Failure Dispatcher ) Ġ: ĠCall Adapter . Factory () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget ( returnType : ĠType , Ġannotations : ĠArray < Annotation >, Ġretrofit : ĠRet rofit ) Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( getRaw Type ( returnType )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCall :: class . java Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Type Ġ= Ġget Parameter Upper Bound ( 0 , ĠreturnType Ġas ĠParameter ized Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( getRaw Type ( call Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult :: class . java Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Type Ġ= Ġget Parameter Upper Bound ( 0 , Ġcall Type Ġas ĠParameter ized Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult Adapter < Any >( result Type , Ġfailure Dispatcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ċ }