public abstract class com.google.common.base.Optional<T> implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.google.common.base.Optional
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static <T> com.google.common.base.Optional<T> absent();
    descriptor: ()Lcom/google/common/base/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 93
            invokestatic com.google.common.base.Absent.withType:()Lcom/google/common/base/Optional;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T:Ljava/lang/Object;>()Lcom/google/common/base/Optional<TT;>;

  public static <T> com.google.common.base.Optional<T> of(T);
    descriptor: (Ljava/lang/Object;)Lcom/google/common/base/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Object reference
         0: .line 105
            new com.google.common.base.Present
            dup
            aload 0 /* reference */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            invokespecial com.google.common.base.Present.<init>:(Ljava/lang/Object;)V
            areturn
        end local 0 // java.lang.Object reference
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  reference  TT;
    Signature: <T:Ljava/lang/Object;>(TT;)Lcom/google/common/base/Optional<TT;>;
    MethodParameters:
           Name  Flags
      reference  

  public static <T> com.google.common.base.Optional<T> fromNullable(T);
    descriptor: (Ljava/lang/Object;)Lcom/google/common/base/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Object nullableReference
         0: .line 116
            aload 0 /* nullableReference */
            ifnonnull 1
            invokestatic com.google.common.base.Optional.absent:()Lcom/google/common/base/Optional;
            goto 2
      StackMap locals:
      StackMap stack:
         1: new com.google.common.base.Present
            dup
            aload 0 /* nullableReference */
            invokespecial com.google.common.base.Present.<init>:(Ljava/lang/Object;)V
      StackMap locals:
      StackMap stack: com.google.common.base.Optional
         2: areturn
        end local 0 // java.lang.Object nullableReference
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0  nullableReference  TT;
    Signature: <T:Ljava/lang/Object;>(TT;)Lcom/google/common/base/Optional<TT;>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
                   Name  Flags
      nullableReference  

  public static <T> com.google.common.base.Optional<T> fromJavaUtil(java.util.Optional<T>);
    descriptor: (Ljava/util/Optional;)Lcom/google/common/base/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.Optional javaUtilOptional
         0: .line 127
            aload 0 /* javaUtilOptional */
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* javaUtilOptional */
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.google.common.base.Optional.fromNullable:(Ljava/lang/Object;)Lcom/google/common/base/Optional;
      StackMap locals:
      StackMap stack: com.google.common.base.Optional
         2: areturn
        end local 0 // java.util.Optional javaUtilOptional
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0  javaUtilOptional  Ljava/util/Optional<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/Optional<TT;>;)Lcom/google/common/base/Optional<TT;>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
                  Name  Flags
      javaUtilOptional  

  public static <T> java.util.Optional<T> toJavaUtil(com.google.common.base.Optional<T>);
    descriptor: (Lcom/google/common/base/Optional;)Ljava/util/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.base.Optional googleOptional
         0: .line 145
            aload 0 /* googleOptional */
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* googleOptional */
            invokevirtual com.google.common.base.Optional.toJavaUtil:()Ljava/util/Optional;
      StackMap locals:
      StackMap stack: java.util.Optional
         2: areturn
        end local 0 // com.google.common.base.Optional googleOptional
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0  googleOptional  Lcom/google/common/base/Optional<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/google/common/base/Optional<TT;>;)Ljava/util/Optional<TT;>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
                Name  Flags
      googleOptional  

  public java.util.Optional<T> toJavaUtil();
    descriptor: ()Ljava/util/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.base.Optional this
         0: .line 158
            aload 0 /* this */
            invokevirtual com.google.common.base.Optional.orNull:()Ljava/lang/Object;
            invokestatic java.util.Optional.ofNullable:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
        end local 0 // com.google.common.base.Optional this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/base/Optional<TT;>;
    Signature: ()Ljava/util/Optional<TT;>;

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.base.Optional this
         0: .line 161
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.common.base.Optional this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/base/Optional<TT;>;

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

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

  public abstract T or();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TT;)TT;
    MethodParameters:
              Name  Flags
      defaultValue  

  public abstract com.google.common.base.Optional<T> or(com.google.common.base.Optional<? extends T>);
    descriptor: (Lcom/google/common/base/Optional;)Lcom/google/common/base/Optional;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Lcom/google/common/base/Optional<+TT;>;)Lcom/google/common/base/Optional<TT;>;
    MethodParameters:
              Name  Flags
      secondChoice  

  public abstract T or(com.google.common.base.Supplier<? extends T>);
    descriptor: (Lcom/google/common/base/Supplier;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Lcom/google/common/base/Supplier<+TT;>;)TT;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
          Name  Flags
      supplier  

  public abstract T orNull();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()TT;
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()

  public abstract java.util.Set<T> asSet();
    descriptor: ()Ljava/util/Set;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/Set<TT;>;

  public abstract <V> com.google.common.base.Optional<V> transform(com.google.common.base.Function<? super T, V>);
    descriptor: (Lcom/google/common/base/Function;)Lcom/google/common/base/Optional;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: <V:Ljava/lang/Object;>(Lcom/google/common/base/Function<-TT;TV;>;)Lcom/google/common/base/Optional<TV;>;
    MethodParameters:
          Name  Flags
      function  

  public abstract boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
        Name  Flags
      object  

  public abstract int hashCode();
    descriptor: ()I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public static <T> java.lang.Iterable<T> presentInstances(java.lang.Iterable<? extends com.google.common.base.Optional<? extends T>>);
    descriptor: (Ljava/lang/Iterable;)Ljava/lang/Iterable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable optionals
         0: .line 335
            aload 0 /* optionals */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 336
            new com.google.common.base.Optional$1
            dup
            aload 0 /* optionals */
            invokespecial com.google.common.base.Optional$1.<init>:(Ljava/lang/Iterable;)V
            areturn
        end local 0 // java.lang.Iterable optionals
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0  optionals  Ljava/lang/Iterable<+Lcom/google/common/base/Optional<+TT;>;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Iterable<+Lcom/google/common/base/Optional<+TT;>;>;)Ljava/lang/Iterable<TT;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
           Name  Flags
      optionals  final
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable;
SourceFile: "Optional.java"
NestMembers:
  com.google.common.base.Optional$1  com.google.common.base.Optional$1$1
InnerClasses:
  com.google.common.base.Optional$1
    RuntimeVisibleAnnotations: 
      com.google.errorprone.annotations.DoNotMock(value = "Use Optional.of(value) or Optional.absent()")
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtCompatible(serializable = true)