public class org.bouncycastle.util.io.pem.PemWriter extends java.io.BufferedWriter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.util.io.pem.PemWriter
  super_class: java.io.BufferedWriter
{
  private static final int LINE_LENGTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 64

  private final int nlLength;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private char[] buf;
    descriptor: [C
    flags: (0x0002) ACC_PRIVATE

  public void <init>(java.io.Writer);
    descriptor: (Ljava/io/Writer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.bouncycastle.util.io.pem.PemWriter this
        start local 1 // java.io.Writer out
         0: .line 29
            aload 0 /* this */
            aload 1 /* out */
            invokespecial java.io.BufferedWriter.<init>:(Ljava/io/Writer;)V
         1: .line 20
            aload 0 /* this */
            bipush 64
            newarray 5
            putfield org.bouncycastle.util.io.pem.PemWriter.buf:[C
         2: .line 31
            invokestatic org.bouncycastle.util.Strings.lineSeparator:()Ljava/lang/String;
            astore 2 /* nl */
        start local 2 // java.lang.String nl
         3: .line 32
            aload 2 /* nl */
            ifnull 6
         4: .line 34
            aload 0 /* this */
            aload 2 /* nl */
            invokevirtual java.lang.String.length:()I
            putfield org.bouncycastle.util.io.pem.PemWriter.nlLength:I
         5: .line 35
            goto 7
         6: .line 38
      StackMap locals: org.bouncycastle.util.io.pem.PemWriter java.io.Writer java.lang.String
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield org.bouncycastle.util.io.pem.PemWriter.nlLength:I
         7: .line 40
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String nl
        end local 1 // java.io.Writer out
        end local 0 // org.bouncycastle.util.io.pem.PemWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/bouncycastle/util/io/pem/PemWriter;
            0    8     1   out  Ljava/io/Writer;
            3    8     2    nl  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      out   

  public int getOutputSize(org.bouncycastle.util.io.pem.PemObject);
    descriptor: (Lorg/bouncycastle/util/io/pem/PemObject;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.bouncycastle.util.io.pem.PemWriter this
        start local 1 // org.bouncycastle.util.io.pem.PemObject obj
         0: .line 52
            iconst_2
            aload 1 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getType:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            bipush 10
            iadd
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.nlLength:I
            iadd
            imul
            bipush 6
            iadd
            iconst_4
            iadd
            istore 2 /* size */
        start local 2 // int size
         1: .line 54
            aload 1 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getHeaders:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 8
         2: .line 56
            aload 1 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getHeaders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         3: goto 6
         4: .line 58
      StackMap locals: int java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bouncycastle.util.io.pem.PemHeader
            astore 4 /* hdr */
        start local 4 // org.bouncycastle.util.io.pem.PemHeader hdr
         5: .line 60
            iload 2 /* size */
            aload 4 /* hdr */
            invokevirtual org.bouncycastle.util.io.pem.PemHeader.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ldc ": "
            invokevirtual java.lang.String.length:()I
            iadd
            aload 4 /* hdr */
            invokevirtual org.bouncycastle.util.io.pem.PemHeader.getValue:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.nlLength:I
            iadd
            iadd
            istore 2 /* size */
        end local 4 // org.bouncycastle.util.io.pem.PemHeader hdr
         6: .line 56
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 3 // java.util.Iterator it
         7: .line 63
            iload 2 /* size */
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.nlLength:I
            iadd
            istore 2 /* size */
         8: .line 67
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getContent:()[B
            arraylength
            iconst_2
            iadd
            iconst_3
            idiv
            iconst_4
            imul
            istore 3 /* dataLen */
        start local 3 // int dataLen
         9: .line 69
            iload 2 /* size */
            iload 3 /* dataLen */
            iload 3 /* dataLen */
            bipush 64
            iadd
            iconst_1
            isub
            bipush 64
            idiv
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.nlLength:I
            imul
            iadd
            iadd
            istore 2 /* size */
        10: .line 71
            iload 2 /* size */
            ireturn
        end local 3 // int dataLen
        end local 2 // int size
        end local 1 // org.bouncycastle.util.io.pem.PemObject obj
        end local 0 // org.bouncycastle.util.io.pem.PemWriter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0     this  Lorg/bouncycastle/util/io/pem/PemWriter;
            0   11     1      obj  Lorg/bouncycastle/util/io/pem/PemObject;
            1   11     2     size  I
            3    7     3       it  Ljava/util/Iterator;
            5    6     4      hdr  Lorg/bouncycastle/util/io/pem/PemHeader;
            9   11     3  dataLen  I
    MethodParameters:
      Name  Flags
      obj   

  public void writeObject(org.bouncycastle.util.io.pem.PemObjectGenerator);
    descriptor: (Lorg/bouncycastle/util/io/pem/PemObjectGenerator;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.bouncycastle.util.io.pem.PemWriter this
        start local 1 // org.bouncycastle.util.io.pem.PemObjectGenerator objGen
         0: .line 77
            aload 1 /* objGen */
            invokeinterface org.bouncycastle.util.io.pem.PemObjectGenerator.generate:()Lorg/bouncycastle/util/io/pem/PemObject;
            astore 2 /* obj */
        start local 2 // org.bouncycastle.util.io.pem.PemObject obj
         1: .line 79
            aload 0 /* this */
            aload 2 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getType:()Ljava/lang/String;
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.writePreEncapsulationBoundary:(Ljava/lang/String;)V
         2: .line 81
            aload 2 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getHeaders:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 12
         3: .line 83
            aload 2 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getHeaders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         4: goto 10
         5: .line 85
      StackMap locals: org.bouncycastle.util.io.pem.PemObject java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bouncycastle.util.io.pem.PemHeader
            astore 4 /* hdr */
        start local 4 // org.bouncycastle.util.io.pem.PemHeader hdr
         6: .line 87
            aload 0 /* this */
            aload 4 /* hdr */
            invokevirtual org.bouncycastle.util.io.pem.PemHeader.getName:()Ljava/lang/String;
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.write:(Ljava/lang/String;)V
         7: .line 88
            aload 0 /* this */
            ldc ": "
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.write:(Ljava/lang/String;)V
         8: .line 89
            aload 0 /* this */
            aload 4 /* hdr */
            invokevirtual org.bouncycastle.util.io.pem.PemHeader.getValue:()Ljava/lang/String;
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.write:(Ljava/lang/String;)V
         9: .line 90
            aload 0 /* this */
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.newLine:()V
        end local 4 // org.bouncycastle.util.io.pem.PemHeader hdr
        10: .line 83
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 3 // java.util.Iterator it
        11: .line 93
            aload 0 /* this */
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.newLine:()V
        12: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getContent:()[B
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.writeEncoded:([B)V
        13: .line 97
            aload 0 /* this */
            aload 2 /* obj */
            invokevirtual org.bouncycastle.util.io.pem.PemObject.getType:()Ljava/lang/String;
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.writePostEncapsulationBoundary:(Ljava/lang/String;)V
        14: .line 98
            return
        end local 2 // org.bouncycastle.util.io.pem.PemObject obj
        end local 1 // org.bouncycastle.util.io.pem.PemObjectGenerator objGen
        end local 0 // org.bouncycastle.util.io.pem.PemWriter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0    this  Lorg/bouncycastle/util/io/pem/PemWriter;
            0   15     1  objGen  Lorg/bouncycastle/util/io/pem/PemObjectGenerator;
            1   15     2     obj  Lorg/bouncycastle/util/io/pem/PemObject;
            4   11     3      it  Ljava/util/Iterator;
            6   10     4     hdr  Lorg/bouncycastle/util/io/pem/PemHeader;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      objGen  

  private void writeEncoded(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.bouncycastle.util.io.pem.PemWriter this
        start local 1 // byte[] bytes
         0: .line 103
            aload 1 /* bytes */
            invokestatic org.bouncycastle.util.encoders.Base64.encode:([B)[B
            astore 1 /* bytes */
         1: .line 105
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 13
         3: .line 107
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 3 /* index */
        start local 3 // int index
         4: .line 109
            goto 9
         5: .line 111
      StackMap locals: int
      StackMap stack:
            iload 2 /* i */
            iload 3 /* index */
            iadd
            aload 1 /* bytes */
            arraylength
            if_icmplt 7
         6: .line 113
            goto 10
         7: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.buf:[C
            iload 3 /* index */
            aload 1 /* bytes */
            iload 2 /* i */
            iload 3 /* index */
            iadd
            baload
            i2c
            castore
         8: .line 116
            iinc 3 /* index */ 1
         9: .line 109
      StackMap locals:
      StackMap stack:
            iload 3 /* index */
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.buf:[C
            arraylength
            if_icmpne 5
        10: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.buf:[C
            iconst_0
            iload 3 /* index */
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.write:([CII)V
        11: .line 119
            aload 0 /* this */
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.newLine:()V
        end local 3 // int index
        12: .line 105
            iload 2 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.util.io.pem.PemWriter.buf:[C
            arraylength
            iadd
            istore 2 /* i */
      StackMap locals:
      StackMap stack:
        13: iload 2 /* i */
            aload 1 /* bytes */
            arraylength
            if_icmplt 3
        end local 2 // int i
        14: .line 121
            return
        end local 1 // byte[] bytes
        end local 0 // org.bouncycastle.util.io.pem.PemWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Lorg/bouncycastle/util/io/pem/PemWriter;
            0   15     1  bytes  [B
            2   14     2      i  I
            4   12     3  index  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      bytes  

  private void writePreEncapsulationBoundary(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.util.io.pem.PemWriter this
        start local 1 // java.lang.String type
         0: .line 127
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "-----BEGIN "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "-----"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.write:(Ljava/lang/String;)V
         1: .line 128
            aload 0 /* this */
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.newLine:()V
         2: .line 129
            return
        end local 1 // java.lang.String type
        end local 0 // org.bouncycastle.util.io.pem.PemWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/util/io/pem/PemWriter;
            0    3     1  type  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      type  

  private void writePostEncapsulationBoundary(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.util.io.pem.PemWriter this
        start local 1 // java.lang.String type
         0: .line 135
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "-----END "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "-----"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.write:(Ljava/lang/String;)V
         1: .line 136
            aload 0 /* this */
            invokevirtual org.bouncycastle.util.io.pem.PemWriter.newLine:()V
         2: .line 137
            return
        end local 1 // java.lang.String type
        end local 0 // org.bouncycastle.util.io.pem.PemWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/util/io/pem/PemWriter;
            0    3     1  type  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      type  
}
SourceFile: "PemWriter.java"