public abstract class org.jruby.util.io.ChannelHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.jruby.util.io.ChannelHelper
  super_class: java.lang.Object
{
  private static final java.lang.reflect.Field filterInField;
    descriptor: Ljava/lang/reflect/Field;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.reflect.Field filterOutField;
    descriptor: Ljava/lang/reflect/Field;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 38
            aconst_null
            astore 0 /* _filterInField */
        start local 0 // java.lang.reflect.Field _filterInField
         1: aconst_null
            astore 1 /* _filterOutField */
        start local 1 // java.lang.reflect.Field _filterOutField
         2: .line 40
            ldc Ljava/io/FilterInputStream;
            ldc "in"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 0 /* _filterInField */
         3: .line 41
            goto 5
      StackMap locals: java.lang.reflect.Field java.lang.reflect.Field
      StackMap stack: java.lang.Exception
         4: pop
         5: .line 44
      StackMap locals:
      StackMap stack:
            ldc Ljava/io/FilterOutputStream;
            ldc "out"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 1 /* _filterOutField */
         6: .line 45
            goto 8
      StackMap locals:
      StackMap stack: java.lang.Exception
         7: pop
         8: .line 47
      StackMap locals:
      StackMap stack:
            aload 0 /* _filterInField */
            putstatic org.jruby.util.io.ChannelHelper.filterInField:Ljava/lang/reflect/Field;
         9: .line 48
            aload 1 /* _filterOutField */
            putstatic org.jruby.util.io.ChannelHelper.filterOutField:Ljava/lang/reflect/Field;
        end local 1 // java.lang.reflect.Field _filterOutField
        end local 0 // java.lang.reflect.Field _filterInField
        10: .line 49
            return
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            1   10     0   _filterInField  Ljava/lang/reflect/Field;
            2   10     1  _filterOutField  Ljava/lang/reflect/Field;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Exception
           5     6       7  Class java.lang.Exception

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.util.io.ChannelHelper this
         0: .line 35
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.jruby.util.io.ChannelHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/util/io/ChannelHelper;

  public static java.nio.channels.ReadableByteChannel readableChannel(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/nio/channels/ReadableByteChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.io.InputStream inputStream
         0: .line 52
            aload 0 /* inputStream */
            instanceof java.io.ByteArrayInputStream
            ifeq 3
         1: .line 53
            getstatic org.jruby.util.io.SeekableByteChannelImpl.USABLE:Z
            ifeq 3
         2: .line 54
            new org.jruby.util.io.SeekableByteChannelImpl
            dup
            aload 0 /* inputStream */
            checkcast java.io.ByteArrayInputStream
            invokespecial org.jruby.util.io.SeekableByteChannelImpl.<init>:(Ljava/io/ByteArrayInputStream;)V
            areturn
         3: .line 57
      StackMap locals:
      StackMap stack:
            aload 0 /* inputStream */
            invokestatic java.nio.channels.Channels.newChannel:(Ljava/io/InputStream;)Ljava/nio/channels/ReadableByteChannel;
            areturn
        end local 0 // java.io.InputStream inputStream
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0  inputStream  Ljava/io/InputStream;
    MethodParameters:
             Name  Flags
      inputStream  final

  public static java.nio.channels.WritableByteChannel writableChannel(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/nio/channels/WritableByteChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.OutputStream ouputStream
         0: .line 61
            aload 0 /* ouputStream */
            invokestatic java.nio.channels.Channels.newChannel:(Ljava/io/OutputStream;)Ljava/nio/channels/WritableByteChannel;
            areturn
        end local 0 // java.io.OutputStream ouputStream
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  ouputStream  Ljava/io/OutputStream;
    MethodParameters:
             Name  Flags
      ouputStream  final

  public static java.io.OutputStream unwrapBufferedStream(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.OutputStream filteredStream
         0: .line 73
            getstatic org.jruby.RubyInstanceConfig.NO_UNWRAP_PROCESS_STREAMS:Z
            ifeq 1
            aload 0 /* filteredStream */
            areturn
         1: .line 75
      StackMap locals:
      StackMap stack:
            aload 0 /* filteredStream */
            invokestatic org.jruby.util.io.ChannelHelper.unwrapFilterOutputStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
            areturn
        end local 0 // java.io.OutputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0  filteredStream  Ljava/io/OutputStream;
    MethodParameters:
                Name  Flags
      filteredStream  

  public static java.io.InputStream unwrapBufferedStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/io/InputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.io.InputStream filteredStream
         0: .line 87
            getstatic org.jruby.RubyInstanceConfig.NO_UNWRAP_PROCESS_STREAMS:Z
            ifeq 1
            aload 0 /* filteredStream */
            areturn
         1: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* filteredStream */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "ProcessPipeInputStream"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_1
            if_icmpeq 3
         2: .line 92
            aload 0 /* filteredStream */
            areturn
         3: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* filteredStream */
            checkcast java.io.FilterInputStream
            invokestatic org.jruby.util.io.ChannelHelper.unwrapFilterInputStream:(Ljava/io/InputStream;)Ljava/io/InputStream;
            areturn
        end local 0 // java.io.InputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0  filteredStream  Ljava/io/InputStream;
    MethodParameters:
                Name  Flags
      filteredStream  

  public static java.io.OutputStream unwrapFilterOutputStream(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.io.OutputStream filteredStream
         0: .line 111
            getstatic org.jruby.util.io.ChannelHelper.filterOutField:Ljava/lang/reflect/Field;
            ifnull 15
         1: .line 112
            goto 14
         2: .line 115
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.io.ChannelHelper.filterOutField:Ljava/lang/reflect/Field;
            invokestatic org.jruby.javasupport.Java.trySetAccessible:(Ljava/lang/reflect/AccessibleObject;)Z
            ifeq 4
         3: .line 116
            getstatic org.jruby.util.io.ChannelHelper.filterOutField:Ljava/lang/reflect/Field;
            aload 0 /* filteredStream */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.io.OutputStream
            goto 5
         4: .line 117
      StackMap locals:
      StackMap stack:
            aconst_null
         5: .line 114
      StackMap locals:
      StackMap stack: java.io.OutputStream
            astore 1 /* tmpStream */
        start local 1 // java.io.OutputStream tmpStream
         6: .line 120
            aload 1 /* tmpStream */
            instanceof java.io.FilterOutputStream
            ifne 10
         7: .line 122
            aload 1 /* tmpStream */
            invokestatic org.jruby.util.io.ChannelHelper.unwrapDripStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
            astore 2 /* dripStream */
        start local 2 // java.io.OutputStream dripStream
         8: .line 124
            aload 2 /* dripStream */
            ifnull 10
         9: .line 126
            aload 2 /* dripStream */
            astore 1 /* tmpStream */
        end local 2 // java.io.OutputStream dripStream
        10: .line 130
      StackMap locals: java.io.OutputStream
      StackMap stack:
            aload 1 /* tmpStream */
            astore 0 /* filteredStream */
        end local 1 // java.io.OutputStream tmpStream
        11: .line 131
            goto 14
      StackMap locals: java.io.OutputStream
      StackMap stack: java.lang.Exception
        12: pop
        13: .line 132
            goto 15
        14: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* filteredStream */
            instanceof java.io.FilterOutputStream
            ifne 2
        15: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* filteredStream */
            areturn
        end local 0 // java.io.OutputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   16     0  filteredStream  Ljava/io/OutputStream;
            6   11     1       tmpStream  Ljava/io/OutputStream;
            8   10     2      dripStream  Ljava/io/OutputStream;
      Exception table:
        from    to  target  type
           2    11      12  Class java.lang.Exception
    MethodParameters:
                Name  Flags
      filteredStream  

  public static java.io.InputStream unwrapFilterInputStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/io/InputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.io.InputStream filteredStream
         0: .line 152
            getstatic org.jruby.util.io.ChannelHelper.filterInField:Ljava/lang/reflect/Field;
            ifnull 17
         1: .line 153
            goto 16
         2: .line 156
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.io.ChannelHelper.filterInField:Ljava/lang/reflect/Field;
            invokestatic org.jruby.javasupport.Java.trySetAccessible:(Ljava/lang/reflect/AccessibleObject;)Z
            ifeq 4
         3: .line 157
            getstatic org.jruby.util.io.ChannelHelper.filterInField:Ljava/lang/reflect/Field;
            aload 0 /* filteredStream */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.io.InputStream
            goto 5
         4: .line 158
      StackMap locals:
      StackMap stack:
            aconst_null
         5: .line 155
      StackMap locals:
      StackMap stack: java.io.InputStream
            astore 1 /* tmpStream */
        start local 1 // java.io.InputStream tmpStream
         6: .line 161
            aload 1 /* tmpStream */
            ifnonnull 8
         7: goto 17
         8: .line 164
      StackMap locals: java.io.InputStream
      StackMap stack:
            aload 1 /* tmpStream */
            instanceof java.io.FilterInputStream
            ifne 12
         9: .line 167
            aload 1 /* tmpStream */
            invokestatic org.jruby.util.io.ChannelHelper.unwrapDripStream:(Ljava/io/InputStream;)Ljava/io/InputStream;
            astore 2 /* dripStream */
        start local 2 // java.io.InputStream dripStream
        10: .line 169
            aload 2 /* dripStream */
            ifnull 12
        11: .line 171
            aload 2 /* dripStream */
            astore 1 /* tmpStream */
        end local 2 // java.io.InputStream dripStream
        12: .line 175
      StackMap locals:
      StackMap stack:
            aload 1 /* tmpStream */
            astore 0 /* filteredStream */
        end local 1 // java.io.InputStream tmpStream
        13: .line 176
            goto 16
      StackMap locals: java.io.InputStream
      StackMap stack: java.lang.Exception
        14: pop
        15: .line 177
            goto 17
        16: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* filteredStream */
            instanceof java.io.FilterInputStream
            ifne 2
        17: .line 181
      StackMap locals:
      StackMap stack:
            aload 0 /* filteredStream */
            areturn
        end local 0 // java.io.InputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0  filteredStream  Ljava/io/InputStream;
            6   13     1       tmpStream  Ljava/io/InputStream;
           10   12     2      dripStream  Ljava/io/InputStream;
      Exception table:
        from    to  target  type
           2     7      14  Class java.lang.Exception
           8    13      14  Class java.lang.Exception
    MethodParameters:
                Name  Flags
      filteredStream  

  private static java.io.OutputStream unwrapDripStream(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.io.OutputStream stream
         0: .line 185
            aload 0 /* stream */
            invokestatic org.jruby.util.io.ChannelHelper.isDripSwitchable:(Ljava/lang/Object;)Z
            ifeq 6
         1: .line 187
            aload 0 /* stream */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "out"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 1 /* out */
        start local 1 // java.lang.reflect.Field out
         2: .line 188
            aload 1 /* out */
            invokestatic org.jruby.javasupport.Java.trySetAccessible:(Ljava/lang/reflect/AccessibleObject;)Z
            ifeq 3
            aload 1 /* out */
            aload 0 /* stream */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.io.OutputStream
            goto 4
      StackMap locals: java.lang.reflect.Field
      StackMap stack:
         3: aconst_null
      StackMap locals:
      StackMap stack: java.io.OutputStream
         4: areturn
        end local 1 // java.lang.reflect.Field out
         5: .line 189
      StackMap locals: java.io.OutputStream
      StackMap stack: java.lang.Exception
            pop
         6: .line 192
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.io.OutputStream stream
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  stream  Ljava/io/OutputStream;
            2    5     1     out  Ljava/lang/reflect/Field;
      Exception table:
        from    to  target  type
           1     4       5  Class java.lang.Exception
    MethodParameters:
        Name  Flags
      stream  

  private static java.io.InputStream unwrapDripStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/io/InputStream;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.io.InputStream stream
         0: .line 196
            aload 0 /* stream */
            invokestatic org.jruby.util.io.ChannelHelper.isDripSwitchable:(Ljava/lang/Object;)Z
            ifeq 6
         1: .line 198
            aload 0 /* stream */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "in"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 1 /* in */
        start local 1 // java.lang.reflect.Field in
         2: .line 199
            aload 1 /* in */
            invokestatic org.jruby.javasupport.Java.trySetAccessible:(Ljava/lang/reflect/AccessibleObject;)Z
            ifeq 3
            aload 1 /* in */
            aload 0 /* stream */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.io.InputStream
            goto 4
      StackMap locals: java.lang.reflect.Field
      StackMap stack:
         3: aconst_null
      StackMap locals:
      StackMap stack: java.io.InputStream
         4: areturn
        end local 1 // java.lang.reflect.Field in
         5: .line 200
      StackMap locals: java.io.InputStream
      StackMap stack: java.lang.Exception
            pop
         6: .line 203
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.io.InputStream stream
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  stream  Ljava/io/InputStream;
            2    5     1      in  Ljava/lang/reflect/Field;
      Exception table:
        from    to  target  type
           1     4       5  Class java.lang.Exception
    MethodParameters:
        Name  Flags
      stream  

  private static boolean isDripSwitchable(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object stream
         0: .line 207
            aload 0 /* stream */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "org.flatland.drip.Switchable"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ireturn
        end local 0 // java.lang.Object stream
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  stream  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      stream  
}
SourceFile: "ChannelHelper.java"