/* Ċ Ġ* ĠÂ© Ġ 2 0 1 8 ĠMatch ĠGroup , ĠLLC . Ċ Ġ*/ Ċ Ċ package Ġcom . t inder . sc ar let . internal . state transition Ċ Ċ import Ġcom . t inder . sc ar let . Event Ċ import Ġcom . t inder . sc ar let . Protocol Specific Event Ċ import Ġcom . t inder . sc ar let . Protocol Specific Event Adapter Ċ import Ġcom . t inder . sc ar let . State Transition Ċ import Ġcom . t inder . sc ar let . utils . getRaw Type Ċ import Ġjava . lang . reflect . Type Ċ Ċ internal Ġclass ĠState Transition To Protocol Specific Event Adapter ( ĊĠĠĠ Ġprivate Ġval Ġprotocol Specific Event Ad at per : ĠProtocol Specific Event Adapter Ċ ) Ġ: ĠState Transition Adapter < Any > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġadapt ( state Transition : ĠState Transition ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġstate Transition . event Ġas ? ĠEvent . On Protocol Event Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Specific Event Ad at per . from Event ( event . protocol Event ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFactory ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprotocol Specific Event Ad at per Factory : ĠProtocol Specific Event Adapter . Factory ĊĠĠĠ Ġ) Ġ: ĠState Transition Adapter . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations : ĠArray < Annotation > ĊĠĠĠĠĠĠĠ Ġ): ĠState Transition Adapter < Any >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġtype . getRaw Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Protocol Specific Event :: class . java . isAssignableFrom ( clazz )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprotocol Event Adapter Ġ= Ġprotocol Specific Event Ad at per Factory . create ( type , Ġannotations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠState Transition To Protocol Specific Event Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Event Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }