public final class java.util.StringJoiner
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: java.util.StringJoiner
  super_class: java.lang.Object
{
  private final java.lang.String prefix;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private java.lang.StringBuilder value;
    descriptor: Ljava/lang/StringBuilder;
    flags: (0x0002) ACC_PRIVATE

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

  public void <init>(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.util.StringJoiner this
        start local 1 // java.lang.CharSequence delimiter
         0: .line 100
            aload 0 /* this */
            aload 1 /* delimiter */
            ldc ""
            ldc ""
            invokespecial java.util.StringJoiner.<init>:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
         1: .line 101
            return
        end local 1 // java.lang.CharSequence delimiter
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Ljava/util/StringJoiner;
            0    2     1  delimiter  Ljava/lang/CharSequence;
    MethodParameters:
           Name  Flags
      delimiter  

  public void <init>(java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // java.util.StringJoiner this
        start local 1 // java.lang.CharSequence delimiter
        start local 2 // java.lang.CharSequence prefix
        start local 3 // java.lang.CharSequence suffix
         0: .line 118
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 121
            aload 2 /* prefix */
            ldc "The prefix must not be null"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 122
            aload 1 /* delimiter */
            ldc "The delimiter must not be null"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         3: .line 123
            aload 3 /* suffix */
            ldc "The suffix must not be null"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         4: .line 125
            aload 0 /* this */
            aload 2 /* prefix */
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            putfield java.util.StringJoiner.prefix:Ljava/lang/String;
         5: .line 126
            aload 0 /* this */
            aload 1 /* delimiter */
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            putfield java.util.StringJoiner.delimiter:Ljava/lang/String;
         6: .line 127
            aload 0 /* this */
            aload 3 /* suffix */
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            putfield java.util.StringJoiner.suffix:Ljava/lang/String;
         7: .line 128
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield java.util.StringJoiner.prefix:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield java.util.StringJoiner.suffix:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
         8: .line 129
            return
        end local 3 // java.lang.CharSequence suffix
        end local 2 // java.lang.CharSequence prefix
        end local 1 // java.lang.CharSequence delimiter
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljava/util/StringJoiner;
            0    9     1  delimiter  Ljava/lang/CharSequence;
            0    9     2     prefix  Ljava/lang/CharSequence;
            0    9     3     suffix  Ljava/lang/CharSequence;
    MethodParameters:
           Name  Flags
      delimiter  
      prefix     
      suffix     

  public java.util.StringJoiner setEmptyValue(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.StringJoiner this
        start local 1 // java.lang.CharSequence emptyValue
         0: .line 146
            aload 0 /* this */
            aload 1 /* emptyValue */
         1: .line 147
            ldc "The empty value must not be null"
         2: .line 146
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.CharSequence
         3: .line 147
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
         4: .line 146
            putfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
         5: .line 148
            aload 0 /* this */
            areturn
        end local 1 // java.lang.CharSequence emptyValue
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Ljava/util/StringJoiner;
            0    6     1  emptyValue  Ljava/lang/CharSequence;
    MethodParameters:
            Name  Flags
      emptyValue  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.util.StringJoiner this
         0: .line 161
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            ifnonnull 2
         1: .line 162
            aload 0 /* this */
            getfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
            areturn
         2: .line 164
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.StringJoiner.suffix:Ljava/lang/String;
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 165
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         4: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.length:()I
            istore 1 /* initialLength */
        start local 1 // int initialLength
         5: .line 168
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield java.util.StringJoiner.suffix:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* result */
        start local 2 // java.lang.String result
         6: .line 170
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            iload 1 /* initialLength */
            invokevirtual java.lang.StringBuilder.setLength:(I)V
         7: .line 171
            aload 2 /* result */
            areturn
        end local 2 // java.lang.String result
        end local 1 // int initialLength
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Ljava/util/StringJoiner;
            5    8     1  initialLength  I
            6    8     2         result  Ljava/lang/String;

  public java.util.StringJoiner add(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.StringJoiner this
        start local 1 // java.lang.CharSequence newElement
         0: .line 185
            aload 0 /* this */
            invokevirtual java.util.StringJoiner.prepareBuilder:()Ljava/lang/StringBuilder;
            aload 1 /* newElement */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            pop
         1: .line 186
            aload 0 /* this */
            areturn
        end local 1 // java.lang.CharSequence newElement
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Ljava/util/StringJoiner;
            0    2     1  newElement  Ljava/lang/CharSequence;
    MethodParameters:
            Name  Flags
      newElement  

  public java.util.StringJoiner merge(java.util.StringJoiner);
    descriptor: (Ljava/util/StringJoiner;)Ljava/util/StringJoiner;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.util.StringJoiner this
        start local 1 // java.util.StringJoiner other
         0: .line 209
            aload 1 /* other */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 210
            aload 1 /* other */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            ifnull 5
         2: .line 211
            aload 1 /* other */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.length:()I
            istore 2 /* length */
        start local 2 // int length
         3: .line 215
            aload 0 /* this */
            invokevirtual java.util.StringJoiner.prepareBuilder:()Ljava/lang/StringBuilder;
            astore 3 /* builder */
        start local 3 // java.lang.StringBuilder builder
         4: .line 216
            aload 3 /* builder */
            aload 1 /* other */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            aload 1 /* other */
            getfield java.util.StringJoiner.prefix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iload 2 /* length */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
            pop
        end local 3 // java.lang.StringBuilder builder
        end local 2 // int length
         5: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // java.util.StringJoiner other
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Ljava/util/StringJoiner;
            0    6     1    other  Ljava/util/StringJoiner;
            3    5     2   length  I
            4    5     3  builder  Ljava/lang/StringBuilder;
    MethodParameters:
       Name  Flags
      other  

  private java.lang.StringBuilder prepareBuilder();
    descriptor: ()Ljava/lang/StringBuilder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.StringJoiner this
         0: .line 222
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            ifnull 3
         1: .line 223
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield java.util.StringJoiner.delimiter:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 224
            goto 4
         3: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* this */
            getfield java.util.StringJoiner.prefix:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            putfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
         4: .line 227
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            areturn
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/util/StringJoiner;

  public int length();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.StringJoiner this
         0: .line 244
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            ifnull 1
            aload 0 /* this */
            getfield java.util.StringJoiner.value:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.length:()I
            aload 0 /* this */
            getfield java.util.StringJoiner.suffix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            goto 2
         1: .line 245
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.StringJoiner.emptyValue:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
         2: .line 244
      StackMap locals:
      StackMap stack: int
            ireturn
        end local 0 // java.util.StringJoiner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/util/StringJoiner;
}
SourceFile: "StringJoiner.java"