abstract class org.bson.internal.Optional<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: org.bson.internal.Optional
  super_class: java.lang.Object
{
  private static final org.bson.internal.Optional<java.lang.Object> NONE;
    descriptor: Lorg/bson/internal/Optional;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/bson/internal/Optional<Ljava/lang/Object;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 24
            new org.bson.internal.Optional$1
            dup
            invokespecial org.bson.internal.Optional$1.<init>:()V
            putstatic org.bson.internal.Optional.NONE:Lorg/bson/internal/Optional;
         1: .line 34
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.internal.Optional this
         0: .line 22
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bson.internal.Optional this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/internal/Optional<TT;>;

  public static <T> org.bson.internal.Optional<T> empty();
    descriptor: ()Lorg/bson/internal/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            getstatic org.bson.internal.Optional.NONE:Lorg/bson/internal/Optional;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T:Ljava/lang/Object;>()Lorg/bson/internal/Optional<TT;>;

  public static <T> org.bson.internal.Optional<T> of(T);
    descriptor: (Ljava/lang/Object;)Lorg/bson/internal/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Object it
         0: .line 43
            aload 0 /* it */
            ifnonnull 2
         1: .line 44
            getstatic org.bson.internal.Optional.NONE:Lorg/bson/internal/Optional;
            areturn
         2: .line 46
      StackMap locals:
      StackMap stack:
            new org.bson.internal.Optional$Some
            dup
            aload 0 /* it */
            invokespecial org.bson.internal.Optional$Some.<init>:(Ljava/lang/Object;)V
            areturn
        end local 0 // java.lang.Object it
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    it  TT;
    Signature: <T:Ljava/lang/Object;>(TT;)Lorg/bson/internal/Optional<TT;>;
    MethodParameters:
      Name  Flags
      it    final

  public abstract T get();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()TT;

  public abstract boolean isEmpty();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.internal.Optional this
         0: .line 56
            ldc "None"
            areturn
        end local 0 // org.bson.internal.Optional this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/internal/Optional<TT;>;

  public boolean isDefined();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.internal.Optional this
         0: .line 60
            aload 0 /* this */
            invokevirtual org.bson.internal.Optional.isEmpty:()Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // org.bson.internal.Optional this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/internal/Optional<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "Optional.java"
NestMembers:
  org.bson.internal.Optional$1  org.bson.internal.Optional$Some
InnerClasses:
  org.bson.internal.Optional$1
  public Some = org.bson.internal.Optional$Some of org.bson.internal.Optional