public class java.beans.EventHandler implements java.lang.reflect.InvocationHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.beans.EventHandler
  super_class: java.lang.Object
{
  private java.lang.Object target;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String action;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.String eventPropertyName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String listenerMethodName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.security.AccessControlContext acc;
    descriptor: Ljava/security/AccessControlContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(java.lang.Object, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // java.beans.EventHandler this
        start local 1 // java.lang.Object target
        start local 2 // java.lang.String action
        start local 3 // java.lang.String eventPropertyName
        start local 4 // java.lang.String listenerMethodName
         0: .line 312
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 284
            aload 0 /* this */
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            putfield java.beans.EventHandler.acc:Ljava/security/AccessControlContext;
         2: .line 313
            aload 0 /* this */
            aload 1 /* target */
            putfield java.beans.EventHandler.target:Ljava/lang/Object;
         3: .line 314
            aload 0 /* this */
            aload 2 /* action */
            putfield java.beans.EventHandler.action:Ljava/lang/String;
         4: .line 315
            aload 1 /* target */
            ifnonnull 6
         5: .line 316
            new java.lang.NullPointerException
            dup
            ldc "target must be non-null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 318
      StackMap locals: java.beans.EventHandler java.lang.Object java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 2 /* action */
            ifnonnull 8
         7: .line 319
            new java.lang.NullPointerException
            dup
            ldc "action must be non-null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 321
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* eventPropertyName */
            putfield java.beans.EventHandler.eventPropertyName:Ljava/lang/String;
         9: .line 322
            aload 0 /* this */
            aload 4 /* listenerMethodName */
            putfield java.beans.EventHandler.listenerMethodName:Ljava/lang/String;
        10: .line 323
            return
        end local 4 // java.lang.String listenerMethodName
        end local 3 // java.lang.String eventPropertyName
        end local 2 // java.lang.String action
        end local 1 // java.lang.Object target
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   11     0                this  Ljava/beans/EventHandler;
            0   11     1              target  Ljava/lang/Object;
            0   11     2              action  Ljava/lang/String;
            0   11     3   eventPropertyName  Ljava/lang/String;
            0   11     4  listenerMethodName  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      java.beans.ConstructorProperties(value = {"target", "action", "eventPropertyName", "listenerMethodName"})
    MethodParameters:
                    Name  Flags
      target              
      action              
      eventPropertyName   
      listenerMethodName  

  public java.lang.Object getTarget();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.beans.EventHandler this
         0: .line 332
            aload 0 /* this */
            getfield java.beans.EventHandler.target:Ljava/lang/Object;
            areturn
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/beans/EventHandler;

  public java.lang.String getAction();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.beans.EventHandler this
         0: .line 345
            aload 0 /* this */
            getfield java.beans.EventHandler.action:Ljava/lang/String;
            areturn
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/beans/EventHandler;

  public java.lang.String getEventPropertyName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.beans.EventHandler this
         0: .line 357
            aload 0 /* this */
            getfield java.beans.EventHandler.eventPropertyName:Ljava/lang/String;
            areturn
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/beans/EventHandler;

  public java.lang.String getListenerMethodName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.beans.EventHandler this
         0: .line 370
            aload 0 /* this */
            getfield java.beans.EventHandler.listenerMethodName:Ljava/lang/String;
            areturn
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/beans/EventHandler;

  private java.lang.Object applyGetters(java.lang.Object, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // java.beans.EventHandler this
        start local 1 // java.lang.Object target
        start local 2 // java.lang.String getters
         0: .line 374
            aload 2 /* getters */
            ifnull 1
            aload 2 /* getters */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 375
      StackMap locals:
      StackMap stack:
            aload 1 /* target */
            areturn
         2: .line 377
      StackMap locals:
      StackMap stack:
            aload 2 /* getters */
            bipush 46
            invokevirtual java.lang.String.indexOf:(I)I
            istore 3 /* firstDot */
        start local 3 // int firstDot
         3: .line 378
            iload 3 /* firstDot */
            iconst_m1
            if_icmpne 5
         4: .line 379
            aload 2 /* getters */
            invokevirtual java.lang.String.length:()I
            istore 3 /* firstDot */
         5: .line 381
      StackMap locals: int
      StackMap stack:
            aload 2 /* getters */
            iconst_0
            iload 3 /* firstDot */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 4 /* first */
        start local 4 // java.lang.String first
         6: .line 382
            aload 2 /* getters */
            iload 3 /* firstDot */
            iconst_1
            iadd
            aload 2 /* getters */
            invokevirtual java.lang.String.length:()I
            invokestatic java.lang.Math.min:(II)I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 5 /* rest */
        start local 5 // java.lang.String rest
         7: .line 385
            aconst_null
            astore 6 /* getter */
        start local 6 // java.lang.reflect.Method getter
         8: .line 386
            aload 1 /* target */
            ifnull 20
         9: .line 387
            aload 1 /* target */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
        10: .line 388
            new java.lang.StringBuilder
            dup
            ldc "get"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* first */
            invokestatic java.beans.NameGenerator.capitalize:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 389
            iconst_0
            anewarray java.lang.Class
        12: .line 387
            invokestatic java.beans.Statement.getMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 6 /* getter */
        13: .line 390
            aload 6 /* getter */
            ifnonnull 18
        14: .line 391
            aload 1 /* target */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
        15: .line 392
            new java.lang.StringBuilder
            dup
            ldc "is"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* first */
            invokestatic java.beans.NameGenerator.capitalize:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 393
            iconst_0
            anewarray java.lang.Class
        17: .line 391
            invokestatic java.beans.Statement.getMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 6 /* getter */
        18: .line 395
      StackMap locals: java.lang.String java.lang.String java.lang.reflect.Method
      StackMap stack:
            aload 6 /* getter */
            ifnonnull 20
        19: .line 396
            aload 1 /* target */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 4 /* first */
            iconst_0
            anewarray java.lang.Class
            invokestatic java.beans.Statement.getMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 6 /* getter */
        20: .line 399
      StackMap locals:
      StackMap stack:
            aload 6 /* getter */
            ifnonnull 24
        21: .line 400
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No method called: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* first */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        22: .line 401
            ldc " defined on "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* target */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 400
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        24: .line 403
      StackMap locals:
      StackMap stack:
            aload 6 /* getter */
            aload 1 /* target */
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.reflect.misc.MethodUtil.invoke:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* newTarget */
        start local 7 // java.lang.Object newTarget
        25: .line 404
            aload 0 /* this */
            aload 7 /* newTarget */
            aload 5 /* rest */
            invokevirtual java.beans.EventHandler.applyGetters:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
        26: areturn
        end local 7 // java.lang.Object newTarget
        end local 6 // java.lang.reflect.Method getter
        27: .line 406
      StackMap locals: java.beans.EventHandler java.lang.Object java.lang.String int java.lang.String java.lang.String
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        28: .line 407
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Failed to call method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* first */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        29: .line 408
            ldc " on "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* target */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* e */
        30: .line 407
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.Exception e
        end local 5 // java.lang.String rest
        end local 4 // java.lang.String first
        end local 3 // int firstDot
        end local 2 // java.lang.String getters
        end local 1 // java.lang.Object target
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   31     0       this  Ljava/beans/EventHandler;
            0   31     1     target  Ljava/lang/Object;
            0   31     2    getters  Ljava/lang/String;
            3   31     3   firstDot  I
            6   31     4      first  Ljava/lang/String;
            7   31     5       rest  Ljava/lang/String;
            8   27     6     getter  Ljava/lang/reflect/Method;
           25   27     7  newTarget  Ljava/lang/Object;
           28   31     6          e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           7    26      27  Class java.lang.Exception
    MethodParameters:
         Name  Flags
      target   
      getters  

  public java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // java.beans.EventHandler this
        start local 1 // java.lang.Object proxy
        start local 2 // java.lang.reflect.Method method
        start local 3 // java.lang.Object[] arguments
         0: .line 424
            aload 0 /* this */
            getfield java.beans.EventHandler.acc:Ljava/security/AccessControlContext;
            astore 4 /* acc */
        start local 4 // java.security.AccessControlContext acc
         1: .line 425
            aload 4 /* acc */
            ifnonnull 3
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 3
         2: .line 426
            new java.lang.SecurityException
            dup
            ldc "AccessControlContext is not set"
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 428
      StackMap locals: java.security.AccessControlContext
      StackMap stack:
            new java.beans.EventHandler$1
            dup
            aload 0 /* this */
            aload 1 /* proxy */
            aload 2 /* method */
            aload 3 /* arguments */
            invokespecial java.beans.EventHandler$1.<init>:(Ljava/beans/EventHandler;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)V
         4: .line 432
            aload 4 /* acc */
         5: .line 428
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
            areturn
        end local 4 // java.security.AccessControlContext acc
        end local 3 // java.lang.Object[] arguments
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.Object proxy
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Ljava/beans/EventHandler;
            0    6     1      proxy  Ljava/lang/Object;
            0    6     2     method  Ljava/lang/reflect/Method;
            0    6     3  arguments  [Ljava/lang/Object;
            1    6     4        acc  Ljava/security/AccessControlContext;
    MethodParameters:
           Name  Flags
      proxy      final
      method     final
      arguments  final

  private java.lang.Object invokeInternal(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=10, args_size=4
        start local 0 // java.beans.EventHandler this
        start local 1 // java.lang.Object proxy
        start local 2 // java.lang.reflect.Method method
        start local 3 // java.lang.Object[] arguments
         0: .line 436
            aload 2 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            astore 4 /* methodName */
        start local 4 // java.lang.String methodName
         1: .line 437
            aload 2 /* method */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            ldc Ljava/lang/Object;
            if_acmpne 10
         2: .line 439
            aload 4 /* methodName */
            ldc "hashCode"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 440
            new java.lang.Integer
            dup
            aload 1 /* proxy */
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            invokespecial java.lang.Integer.<init>:(I)V
            areturn
         4: .line 441
      StackMap locals: java.lang.String
      StackMap stack:
            aload 4 /* methodName */
            ldc "equals"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         5: .line 442
            aload 1 /* proxy */
            aload 3 /* arguments */
            iconst_0
            aaload
            if_acmpne 6
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            goto 7
      StackMap locals:
      StackMap stack:
         6: getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
      StackMap locals:
      StackMap stack: java.lang.Boolean
         7: areturn
         8: .line 443
      StackMap locals:
      StackMap stack:
            aload 4 /* methodName */
            ldc "toString"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         9: .line 444
            new java.lang.StringBuilder
            dup
            aload 1 /* proxy */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 64
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 1 /* proxy */
            invokevirtual java.lang.Object.hashCode:()I
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        10: .line 448
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.beans.EventHandler.listenerMethodName:Ljava/lang/String;
            ifnull 11
            aload 0 /* this */
            getfield java.beans.EventHandler.listenerMethodName:Ljava/lang/String;
            aload 4 /* methodName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 53
        11: .line 449
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* argTypes */
        start local 5 // java.lang.Class[] argTypes
        12: .line 450
            aconst_null
            astore 6 /* newArgs */
        start local 6 // java.lang.Object[] newArgs
        13: .line 452
            aload 0 /* this */
            getfield java.beans.EventHandler.eventPropertyName:Ljava/lang/String;
            ifnonnull 17
        14: .line 453
            iconst_0
            anewarray java.lang.Object
            astore 6 /* newArgs */
        15: .line 454
            iconst_0
            anewarray java.lang.Class
            astore 5 /* argTypes */
        16: .line 455
            goto 23
        17: .line 457
      StackMap locals: java.lang.Class[] java.lang.Object[]
      StackMap stack:
            aload 0 /* this */
            aload 3 /* arguments */
            iconst_0
            aaload
            aload 0 /* this */
            invokevirtual java.beans.EventHandler.getEventPropertyName:()Ljava/lang/String;
            invokevirtual java.beans.EventHandler.applyGetters:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            astore 7 /* input */
        start local 7 // java.lang.Object input
        18: .line 458
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 7 /* input */
            aastore
            astore 6 /* newArgs */
        19: .line 459
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 7 /* input */
            ifnonnull 20
            aconst_null
            goto 21
        20: .line 460
      StackMap locals: java.beans.EventHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] java.lang.String java.lang.Class[] java.lang.Object[] java.lang.Object
      StackMap stack: java.lang.Class[] java.lang.Class[] int
            aload 7 /* input */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
      StackMap locals: java.beans.EventHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] java.lang.String java.lang.Class[] java.lang.Object[] java.lang.Object
      StackMap stack: java.lang.Class[] java.lang.Class[] int java.lang.Class
        21: aastore
        22: .line 459
            astore 5 /* argTypes */
        end local 7 // java.lang.Object input
        23: .line 463
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.beans.EventHandler.action:Ljava/lang/String;
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 7 /* lastDot */
        start local 7 // int lastDot
        24: .line 464
            iload 7 /* lastDot */
            iconst_m1
            if_icmpeq 27
        25: .line 465
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield java.beans.EventHandler.target:Ljava/lang/Object;
            aload 0 /* this */
            getfield java.beans.EventHandler.action:Ljava/lang/String;
            iconst_0
            iload 7 /* lastDot */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.beans.EventHandler.applyGetters:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            putfield java.beans.EventHandler.target:Ljava/lang/Object;
        26: .line 466
            aload 0 /* this */
            aload 0 /* this */
            getfield java.beans.EventHandler.action:Ljava/lang/String;
            iload 7 /* lastDot */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            putfield java.beans.EventHandler.action:Ljava/lang/String;
        27: .line 469
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield java.beans.EventHandler.target:Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 0 /* this */
            getfield java.beans.EventHandler.action:Ljava/lang/String;
            aload 5 /* argTypes */
        28: .line 468
            invokestatic java.beans.Statement.getMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 8 /* targetMethod */
        start local 8 // java.lang.reflect.Method targetMethod
        29: .line 470
            aload 8 /* targetMethod */
            ifnonnull 33
        30: .line 471
            aload 0 /* this */
            getfield java.beans.EventHandler.target:Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
        31: .line 472
            new java.lang.StringBuilder
            dup
            ldc "set"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield java.beans.EventHandler.action:Ljava/lang/String;
            invokestatic java.beans.NameGenerator.capitalize:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* argTypes */
        32: .line 471
            invokestatic java.beans.Statement.getMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 8 /* targetMethod */
        33: .line 474
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 8 /* targetMethod */
            ifnonnull 43
        34: .line 475
            aload 5 /* argTypes */
            arraylength
            ifne 36
        35: .line 476
            ldc " with no arguments"
            goto 37
        36: .line 477
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc " with argument "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* argTypes */
            iconst_0
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        37: .line 475
      StackMap locals:
      StackMap stack: java.lang.String
            astore 9 /* argTypeString */
        start local 9 // java.lang.String argTypeString
        38: .line 478
            new java.lang.RuntimeException
            dup
        39: .line 479
            new java.lang.StringBuilder
            dup
            ldc "No method called "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield java.beans.EventHandler.action:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " on "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        40: .line 480
            aload 0 /* this */
            getfield java.beans.EventHandler.target:Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            aload 9 /* argTypeString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        41: .line 479
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        42: .line 478
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // java.lang.String argTypeString
        43: .line 482
      StackMap locals:
      StackMap stack:
            aload 8 /* targetMethod */
            aload 0 /* this */
            getfield java.beans.EventHandler.target:Ljava/lang/Object;
            aload 6 /* newArgs */
            invokestatic sun.reflect.misc.MethodUtil.invoke:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
        44: areturn
        end local 8 // java.lang.reflect.Method targetMethod
        end local 7 // int lastDot
        45: .line 484
      StackMap locals: java.beans.EventHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] java.lang.String java.lang.Class[] java.lang.Object[]
      StackMap stack: java.lang.IllegalAccessException
            astore 7 /* ex */
        start local 7 // java.lang.IllegalAccessException ex
        46: .line 485
            new java.lang.RuntimeException
            dup
            aload 7 /* ex */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.IllegalAccessException ex
        47: .line 487
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 7 /* ex */
        start local 7 // java.lang.reflect.InvocationTargetException ex
        48: .line 488
            aload 7 /* ex */
            invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
            astore 8 /* th */
        start local 8 // java.lang.Throwable th
        49: .line 489
            aload 8 /* th */
            instanceof java.lang.RuntimeException
            ifeq 51
        50: .line 490
            aload 8 /* th */
            checkcast java.lang.RuntimeException
            goto 52
        51: .line 491
      StackMap locals: java.lang.reflect.InvocationTargetException java.lang.Throwable
      StackMap stack:
            new java.lang.RuntimeException
            dup
            aload 8 /* th */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
        52: .line 489
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            athrow
        end local 8 // java.lang.Throwable th
        end local 7 // java.lang.reflect.InvocationTargetException ex
        end local 6 // java.lang.Object[] newArgs
        end local 5 // java.lang.Class[] argTypes
        53: .line 494
      StackMap locals: java.beans.EventHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] java.lang.String
      StackMap stack:
            aconst_null
            areturn
        end local 4 // java.lang.String methodName
        end local 3 // java.lang.Object[] arguments
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.Object proxy
        end local 0 // java.beans.EventHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   54     0           this  Ljava/beans/EventHandler;
            0   54     1          proxy  Ljava/lang/Object;
            0   54     2         method  Ljava/lang/reflect/Method;
            0   54     3      arguments  [Ljava/lang/Object;
            1   54     4     methodName  Ljava/lang/String;
           12   53     5       argTypes  [Ljava/lang/Class;
           13   53     6        newArgs  [Ljava/lang/Object;
           18   23     7          input  Ljava/lang/Object;
           24   45     7        lastDot  I
           29   45     8   targetMethod  Ljava/lang/reflect/Method;
           38   43     9  argTypeString  Ljava/lang/String;
           46   47     7             ex  Ljava/lang/IllegalAccessException;
           48   53     7             ex  Ljava/lang/reflect/InvocationTargetException;
           49   53     8             th  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          23    44      45  Class java.lang.IllegalAccessException
          23    44      47  Class java.lang.reflect.InvocationTargetException
    MethodParameters:
           Name  Flags
      proxy      
      method     
      arguments  

  public static <T> T create(java.lang.Class<T>, , java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // java.lang.Class listenerInterface
        start local 1 // java.lang.Object target
        start local 2 // java.lang.String action
         0: .line 535
            aload 0 /* listenerInterface */
            aload 1 /* target */
            aload 2 /* action */
            aconst_null
            aconst_null
            invokestatic java.beans.EventHandler.create:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.String action
        end local 1 // java.lang.Object target
        end local 0 // java.lang.Class listenerInterface
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0  listenerInterface  Ljava/lang/Class<TT;>;
            0    1     1             target  Ljava/lang/Object;
            0    1     2             action  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/Object;Ljava/lang/String;)TT;
    MethodParameters:
                   Name  Flags
      listenerInterface  
      target             
      action             

  public static <T> T create(java.lang.Class<T>, , java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.lang.Class listenerInterface
        start local 1 // java.lang.Object target
        start local 2 // java.lang.String action
        start local 3 // java.lang.String eventPropertyName
         0: .line 594
            aload 0 /* listenerInterface */
            aload 1 /* target */
            aload 2 /* action */
            aload 3 /* eventPropertyName */
            aconst_null
            invokestatic java.beans.EventHandler.create:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.String eventPropertyName
        end local 2 // java.lang.String action
        end local 1 // java.lang.Object target
        end local 0 // java.lang.Class listenerInterface
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0  listenerInterface  Ljava/lang/Class<TT;>;
            0    1     1             target  Ljava/lang/Object;
            0    1     2             action  Ljava/lang/String;
            0    1     3  eventPropertyName  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)TT;
    MethodParameters:
                   Name  Flags
      listenerInterface  
      target             
      action             
      eventPropertyName  

  public static <T> T create(java.lang.Class<T>, , java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=5
        start local 0 // java.lang.Class listenerInterface
        start local 1 // java.lang.Object target
        start local 2 // java.lang.String action
        start local 3 // java.lang.String eventPropertyName
        start local 4 // java.lang.String listenerMethodName
         0: .line 687
            new java.beans.EventHandler
            dup
            aload 1 /* target */
            aload 2 /* action */
         1: .line 688
            aload 3 /* eventPropertyName */
         2: .line 689
            aload 4 /* listenerMethodName */
         3: .line 687
            invokespecial java.beans.EventHandler.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 5 /* handler */
        start local 5 // java.beans.EventHandler handler
         4: .line 690
            aload 0 /* listenerInterface */
            ifnonnull 8
         5: .line 691
            new java.lang.NullPointerException
            dup
         6: .line 692
            ldc "listenerInterface must be non-null"
         7: .line 691
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 694
      StackMap locals: java.beans.EventHandler
      StackMap stack:
            aload 0 /* listenerInterface */
            invokestatic java.beans.EventHandler.getClassLoader:(Ljava/lang/Class;)Ljava/lang/ClassLoader;
            astore 6 /* loader */
        start local 6 // java.lang.ClassLoader loader
         9: .line 695
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 0 /* listenerInterface */
            aastore
            astore 7 /* interfaces */
        start local 7 // java.lang.Class[] interfaces
        10: .line 696
            new java.beans.EventHandler$2
            dup
            aload 6 /* loader */
            aload 7 /* interfaces */
            aload 5 /* handler */
            invokespecial java.beans.EventHandler$2.<init>:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/beans/EventHandler;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            areturn
        end local 7 // java.lang.Class[] interfaces
        end local 6 // java.lang.ClassLoader loader
        end local 5 // java.beans.EventHandler handler
        end local 4 // java.lang.String listenerMethodName
        end local 3 // java.lang.String eventPropertyName
        end local 2 // java.lang.String action
        end local 1 // java.lang.Object target
        end local 0 // java.lang.Class listenerInterface
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   11     0   listenerInterface  Ljava/lang/Class<TT;>;
            0   11     1              target  Ljava/lang/Object;
            0   11     2              action  Ljava/lang/String;
            0   11     3   eventPropertyName  Ljava/lang/String;
            0   11     4  listenerMethodName  Ljava/lang/String;
            4   11     5             handler  Ljava/beans/EventHandler;
            9   11     6              loader  Ljava/lang/ClassLoader;
           10   11     7          interfaces  [Ljava/lang/Class;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)TT;
    MethodParameters:
                    Name  Flags
      listenerInterface   
      target              
      action              
      eventPropertyName   
      listenerMethodName  

  private static java.lang.ClassLoader getClassLoader(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/ClassLoader;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.lang.Class type
         0: .line 705
            aload 0 /* type */
            invokestatic sun.reflect.misc.ReflectUtil.checkPackageAccess:(Ljava/lang/Class;)V
         1: .line 706
            aload 0 /* type */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 1 /* loader */
        start local 1 // java.lang.ClassLoader loader
         2: .line 707
            aload 1 /* loader */
            ifnonnull 6
         3: .line 708
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
            astore 1 /* loader */
         4: .line 709
            aload 1 /* loader */
            ifnonnull 6
         5: .line 710
            invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
            astore 1 /* loader */
         6: .line 713
      StackMap locals: java.lang.ClassLoader
      StackMap stack:
            aload 1 /* loader */
            areturn
        end local 1 // java.lang.ClassLoader loader
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    type  Ljava/lang/Class<*>;
            2    7     1  loader  Ljava/lang/ClassLoader;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/ClassLoader;
    MethodParameters:
      Name  Flags
      type  
}
SourceFile: "EventHandler.java"
NestMembers:
  java.beans.EventHandler$1  java.beans.EventHandler$2
InnerClasses:
  java.beans.EventHandler$1
  java.beans.EventHandler$2