package Ġio . mir on ov . sent o . compiler . generator Ċ Ċ import Ġio . mir on ov . sent o . compiler . Content Generator Ċ import Ġio . mir on ov . sent o . compiler . Generated Content Ċ import Ġio . mir on ov . sent o . compiler . Generation Environment Ċ import Ġio . mir on ov . sent o . compiler . common . Methods Ċ import Ġio . mir on ov . sent o . compiler . common . Types Ċ import Ġio . mir on ov . sent o . compiler . common . is Abstract Ċ import Ġio . mir on ov . sent o . compiler . common . is Interface Ċ import Ġio . mir on ov . sent o . compiler . common . is Private Ċ import Ġio . mir on ov . sent o . compiler . model . Listener Target Spec Ċ import Ġorg . object web . asm . Op codes . ACC _ FINAL Ċ import Ġorg . object web . asm . Op codes . ACC _ PRIVATE Ċ import Ġorg . object web . asm . Op codes . ACC _ PUBLIC Ċ import Ġorg . object web . asm . Op codes . ACC _ SUPER Ċ Ċ internal Ġclass ĠListener Binding Content Generator ( private Ġval Ġtarget : ĠListener Target Spec ) Ġ: ĠContent Generator Ġ{ ĊĠ Ġoverride Ġfun Ġgenerate ( environment : ĠGeneration Environment ): ĠCollection < Generated Content > Ġ{ ĊĠĠĠ Ġreturn ĠlistOf ( Generated Content . from ( target . type , Ġmap Of (), Ġenvironment . new Class Ġ{ ĊĠĠĠĠĠ Ġval Ġparent Ġ= Ġif Ġ( target . listener . listener . is Interface ) ĠTypes . OBJECT Ġelse Ġtarget . listener . listener . type ĊĠĠĠĠĠ Ġval Ġinterfaces Ġ= Ġif Ġ( target . listener . listener . is Interface ) ĠarrayOf ( target . listener . listener . type ) Ġelse Ġempty Array () ĊĊĠĠĠĠĠ Ġvisit ( ACC _ PUBLIC Ġ+ ĠACC _ SUPER , Ġtarget . type , Ġnull , Ġparent , Ġinterfaces ) ĊĠĠĠĠĠ Ġvisit Field ( ACC _ PRIVATE Ġ+ ĠACC _ FINAL , Ġ" target ", Ġtarget . clazz . type ) ĊĊĠĠĠĠĠ Ġnew Method ( ACC _ PUBLIC , ĠMethods . get Constructor ( target . clazz )) Ġ{ ĊĠĠĠĠĠĠĠ Ġload This () ĊĠĠĠĠĠĠĠ Ġinvoke Constructor ( parent , ĠMethods . get Constructor ()) ĊĊĠĠĠĠĠĠĠ Ġload This () ĊĠĠĠĠĠĠĠ Ġload Arg ( 0 ) ĊĠĠĠĠĠĠĠ Ġput Field ( target . type , Ġ" target ", Ġtarget . clazz . type ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġnew Method ( ACC _ PUBLIC , Ġtarget . listener . callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġload This () ĊĠĠĠĠĠĠĠ Ġget Field ( target . type , Ġ" target ", Ġtarget . clazz . type ) ĊĊĠĠĠĠĠĠĠ Ġtarget . arguments . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġload Arg ( it . index ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Types . is Primitive ( it . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Cast ( it . type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( target . method . is Private ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinvoke Static ( target . clazz , Ġenvironment . naming . getS ynt hetic Accessor ( target . clazz , Ġtarget . method )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinvoke Virtual ( target . clazz , Ġtarget . method ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( target . listener . callback . returns Ġ== ĠTypes . BOOLEAN Ġ&& Ġtarget . method . returns Ġ== ĠTypes . VOID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpush ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( target . listener . callback . returns Ġ== ĠTypes . VOID Ġ&& Ġtarget . method . returns Ġ== ĠTypes . BOOLEAN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġenvironment . registry . list Public Methods ( target . listener . listener ). filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit . is Abstract Ġ&& Ġ! Methods . equals By Java Declaration ( it , Ġtarget . listener . callback ) ĊĠĠĠĠĠ Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Method ( ACC _ PUBLIC , Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . returns Ġ== ĠTypes . BOOLEAN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpush ( false ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ})) ĊĠ Ġ} Ċ } Ċ