docs: private static List<byte[]> parsePrivateKeyASN1(ByteBuffer byteBuffer) {
      final List<byte[]> collection = new ArrayList<byte[]>();
      while (byteBuffer.hasRemaining()) {
        byte type = byteBuffer.get();
        int length = UnsignedBytes.toInt(byteBuffer.get());
        if ((length & 0x80) != 0) {
          int numberOfOctets = length ^ 0x80;
          length = 0;
          for (int i = 0; i < numberOfOctets; ++i) {
            int lengthChunk = UnsignedBytes.toInt(byteBuffer.get());
            length += lengthChunk << (numberOfOctets - i - 1) * 8;
          }
        }
        if (length < 0) {
          throw new IllegalArgumentException();
        }
        if (type == 0x30) {
          int position = byteBuffer.position();
          byte[] data = Arrays.copyOfRange(byteBuffer.array(), position, position + length);
          return parsePrivateKeyASN1(ByteBuffer.wrap(data));
        }
        if (type == 0x02) {
          byte[] segment = new byte[length];
          byteBuffer.get(segment);
          collection.add(segment);
        }
      }
      return collection;
    }