public abstract class com.sun.xml.internal.fastinfoset.tools.TransformInputOutput
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.xml.internal.fastinfoset.tools.TransformInputOutput
  super_class: java.lang.Object
{
  private static java.net.URI currentJavaWorkingDirectory;
    descriptor: Ljava/net/URI;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 80
            new java.io.File
            dup
            ldc "user.dir"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            putstatic com.sun.xml.internal.fastinfoset.tools.TransformInputOutput.currentJavaWorkingDirectory:Ljava/net/URI;
         1: .line 81
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.xml.internal.fastinfoset.tools.TransformInputOutput this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            return
        end local 0 // com.sun.xml.internal.fastinfoset.tools.TransformInputOutput this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/xml/internal/fastinfoset/tools/TransformInputOutput;

  public void parse(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // com.sun.xml.internal.fastinfoset.tools.TransformInputOutput this
        start local 1 // java.lang.String[] args
         0: .line 52
            aconst_null
            astore 2 /* in */
        start local 2 // java.io.InputStream in
         1: .line 53
            aconst_null
            astore 3 /* out */
        start local 3 // java.io.OutputStream out
         2: .line 54
            aload 1 /* args */
            arraylength
            ifne 6
         3: .line 55
            new java.io.BufferedInputStream
            dup
            getstatic java.lang.System.in:Ljava/io/InputStream;
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 2 /* in */
         4: .line 56
            new java.io.BufferedOutputStream
            dup
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 3 /* out */
         5: .line 57
            goto 15
      StackMap locals: java.io.InputStream java.io.OutputStream
      StackMap stack:
         6: aload 1 /* args */
            arraylength
            iconst_1
            if_icmpne 10
         7: .line 58
            new java.io.BufferedInputStream
            dup
            new java.io.FileInputStream
            dup
            aload 1 /* args */
            iconst_0
            aaload
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 2 /* in */
         8: .line 59
            new java.io.BufferedOutputStream
            dup
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 3 /* out */
         9: .line 60
            goto 15
      StackMap locals:
      StackMap stack:
        10: aload 1 /* args */
            arraylength
            iconst_2
            if_icmpne 14
        11: .line 61
            new java.io.BufferedInputStream
            dup
            new java.io.FileInputStream
            dup
            aload 1 /* args */
            iconst_0
            aaload
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 2 /* in */
        12: .line 62
            new java.io.BufferedOutputStream
            dup
            new java.io.FileOutputStream
            dup
            aload 1 /* args */
            iconst_1
            aaload
            invokespecial java.io.FileOutputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 3 /* out */
        13: .line 63
            goto 15
        14: .line 64
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            invokestatic com.sun.xml.internal.fastinfoset.CommonResourceBundle.getInstance:()Lcom/sun/xml/internal/fastinfoset/CommonResourceBundle;
            ldc "message.optinalFileNotSpecified"
            invokevirtual com.sun.xml.internal.fastinfoset.CommonResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* in */
            aload 3 /* out */
            invokevirtual com.sun.xml.internal.fastinfoset.tools.TransformInputOutput.parse:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
        16: .line 68
            return
        end local 3 // java.io.OutputStream out
        end local 2 // java.io.InputStream in
        end local 1 // java.lang.String[] args
        end local 0 // com.sun.xml.internal.fastinfoset.tools.TransformInputOutput this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lcom/sun/xml/internal/fastinfoset/tools/TransformInputOutput;
            0   17     1  args  [Ljava/lang/String;
            1   17     2    in  Ljava/io/InputStream;
            2   17     3   out  Ljava/io/OutputStream;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      args  

  public abstract void parse(java.io.InputStream, java.io.OutputStream);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      in    
      out   

  public void parse(java.io.InputStream, java.io.OutputStream, java.lang.String);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.sun.xml.internal.fastinfoset.tools.TransformInputOutput this
        start local 1 // java.io.InputStream in
        start local 2 // java.io.OutputStream out
        start local 3 // java.lang.String workingDirectory
         0: .line 75
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 3 // java.lang.String workingDirectory
        end local 2 // java.io.OutputStream out
        end local 1 // java.io.InputStream in
        end local 0 // com.sun.xml.internal.fastinfoset.tools.TransformInputOutput this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lcom/sun/xml/internal/fastinfoset/tools/TransformInputOutput;
            0    1     1                in  Ljava/io/InputStream;
            0    1     2               out  Ljava/io/OutputStream;
            0    1     3  workingDirectory  Ljava/lang/String;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
                  Name  Flags
      in                
      out               
      workingDirectory  

  protected static org.xml.sax.EntityResolver createRelativePathResolver(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/xml/sax/EntityResolver;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String workingDirectory
         0: .line 84
            new com.sun.xml.internal.fastinfoset.tools.TransformInputOutput$1
            dup
            aload 0 /* workingDirectory */
            invokespecial com.sun.xml.internal.fastinfoset.tools.TransformInputOutput$1.<init>:(Ljava/lang/String;)V
            areturn
        end local 0 // java.lang.String workingDirectory
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0  workingDirectory  Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      workingDirectory  final

  private static java.net.URI convertToNewWorkingDirectory(java.net.URI, java.net.URI, java.net.URI);
    descriptor: (Ljava/net/URI;Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=15, args_size=3
        start local 0 // java.net.URI oldwd
        start local 1 // java.net.URI newwd
        start local 2 // java.net.URI file
         0: .line 103
            aload 0 /* oldwd */
            invokevirtual java.net.URI.toString:()Ljava/lang/String;
            astore 3 /* oldwdStr */
        start local 3 // java.lang.String oldwdStr
         1: .line 104
            aload 1 /* newwd */
            invokevirtual java.net.URI.toString:()Ljava/lang/String;
            astore 4 /* newwdStr */
        start local 4 // java.lang.String newwdStr
         2: .line 105
            aload 2 /* file */
            invokevirtual java.net.URI.toString:()Ljava/lang/String;
            astore 5 /* fileStr */
        start local 5 // java.lang.String fileStr
         3: .line 107
            aconst_null
            astore 6 /* cmpStr */
        start local 6 // java.lang.String cmpStr
         4: .line 109
            aload 5 /* fileStr */
            aload 3 /* oldwdStr */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 6
            aload 5 /* fileStr */
            aload 3 /* oldwdStr */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            dup
            astore 6 /* cmpStr */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 6
         5: .line 110
            new java.net.URI
            dup
            new java.lang.StringBuilder
            dup
            aload 4 /* newwdStr */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 6 /* cmpStr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            areturn
         6: .line 113
      StackMap locals: java.net.URI java.net.URI java.net.URI java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* oldwdStr */
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 7 /* oldwdSplit */
        start local 7 // java.lang.String[] oldwdSplit
         7: .line 114
            aload 4 /* newwdStr */
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 8 /* newwdSplit */
        start local 8 // java.lang.String[] newwdSplit
         8: .line 115
            aload 5 /* fileStr */
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 9 /* fileSplit */
        start local 9 // java.lang.String[] fileSplit
         9: .line 118
            iconst_0
            istore 10 /* diff */
        start local 10 // int diff
        10: goto 14
        11: .line 119
      StackMap locals: java.net.URI java.net.URI java.net.URI java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String[] java.lang.String[] java.lang.String[] int
      StackMap stack:
            aload 7 /* oldwdSplit */
            iload 10 /* diff */
            aaload
            aload 9 /* fileSplit */
            iload 10 /* diff */
            aaload
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
        12: .line 120
            goto 15
        13: .line 118
      StackMap locals:
      StackMap stack:
            iinc 10 /* diff */ 1
      StackMap locals:
      StackMap stack:
        14: iload 10 /* diff */
            aload 7 /* oldwdSplit */
            arraylength
            if_icmpge 15
            iload 10 /* diff */
            aload 9 /* fileSplit */
            arraylength
            if_icmplt 11
        15: .line 125
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 11 /* diffNew */
        start local 11 // int diffNew
        16: goto 20
        17: .line 126
      StackMap locals: int
      StackMap stack:
            aload 8 /* newwdSplit */
            iload 11 /* diffNew */
            aaload
            aload 9 /* fileSplit */
            iload 11 /* diffNew */
            aaload
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 19
        18: .line 127
            goto 21
        19: .line 125
      StackMap locals:
      StackMap stack:
            iinc 11 /* diffNew */ 1
      StackMap locals:
      StackMap stack:
        20: iload 11 /* diffNew */
            aload 8 /* newwdSplit */
            arraylength
            if_icmpge 21
            iload 11 /* diffNew */
            aload 9 /* fileSplit */
            arraylength
            if_icmplt 17
        21: .line 133
      StackMap locals:
      StackMap stack:
            iload 11 /* diffNew */
            iload 10 /* diff */
            if_icmple 23
        22: .line 134
            aload 2 /* file */
            areturn
        23: .line 137
      StackMap locals:
      StackMap stack:
            aload 7 /* oldwdSplit */
            arraylength
            iload 10 /* diff */
            isub
            istore 12 /* elemsToSub */
        start local 12 // int elemsToSub
        24: .line 138
            new java.lang.StringBuffer
            dup
            bipush 100
            invokespecial java.lang.StringBuffer.<init>:(I)V
            astore 13 /* resultStr */
        start local 13 // java.lang.StringBuffer resultStr
        25: .line 139
            iconst_0
            istore 14 /* i */
        start local 14 // int i
        26: goto 30
        27: .line 140
      StackMap locals: int java.lang.StringBuffer int
      StackMap stack:
            aload 13 /* resultStr */
            aload 8 /* newwdSplit */
            iload 14 /* i */
            aaload
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        28: .line 141
            aload 13 /* resultStr */
            bipush 47
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
        29: .line 139
            iinc 14 /* i */ 1
      StackMap locals:
      StackMap stack:
        30: iload 14 /* i */
            aload 8 /* newwdSplit */
            arraylength
            iload 12 /* elemsToSub */
            isub
            if_icmplt 27
        end local 14 // int i
        31: .line 144
            iload 10 /* diff */
            istore 14 /* i */
        start local 14 // int i
        32: goto 36
        33: .line 145
      StackMap locals:
      StackMap stack:
            aload 13 /* resultStr */
            aload 9 /* fileSplit */
            iload 14 /* i */
            aaload
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        34: .line 146
            iload 14 /* i */
            aload 9 /* fileSplit */
            arraylength
            iconst_1
            isub
            if_icmpge 35
            aload 13 /* resultStr */
            bipush 47
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
        35: .line 144
      StackMap locals:
      StackMap stack:
            iinc 14 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 14 /* i */
            aload 9 /* fileSplit */
            arraylength
            if_icmplt 33
        end local 14 // int i
        37: .line 149
            new java.net.URI
            dup
            aload 13 /* resultStr */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            areturn
        end local 13 // java.lang.StringBuffer resultStr
        end local 12 // int elemsToSub
        end local 11 // int diffNew
        end local 10 // int diff
        end local 9 // java.lang.String[] fileSplit
        end local 8 // java.lang.String[] newwdSplit
        end local 7 // java.lang.String[] oldwdSplit
        end local 6 // java.lang.String cmpStr
        end local 5 // java.lang.String fileStr
        end local 4 // java.lang.String newwdStr
        end local 3 // java.lang.String oldwdStr
        end local 2 // java.net.URI file
        end local 1 // java.net.URI newwd
        end local 0 // java.net.URI oldwd
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   38     0       oldwd  Ljava/net/URI;
            0   38     1       newwd  Ljava/net/URI;
            0   38     2        file  Ljava/net/URI;
            1   38     3    oldwdStr  Ljava/lang/String;
            2   38     4    newwdStr  Ljava/lang/String;
            3   38     5     fileStr  Ljava/lang/String;
            4   38     6      cmpStr  Ljava/lang/String;
            7   38     7  oldwdSplit  [Ljava/lang/String;
            8   38     8  newwdSplit  [Ljava/lang/String;
            9   38     9   fileSplit  [Ljava/lang/String;
           10   38    10        diff  I
           16   38    11     diffNew  I
           24   38    12  elemsToSub  I
           25   38    13   resultStr  Ljava/lang/StringBuffer;
           26   31    14           i  I
           32   37    14           i  I
    Exceptions:
      throws java.io.IOException, java.net.URISyntaxException
    MethodParameters:
       Name  Flags
      oldwd  
      newwd  
      file   
}
SourceFile: "TransformInputOutput.java"
NestMembers:
  com.sun.xml.internal.fastinfoset.tools.TransformInputOutput$1
InnerClasses:
  com.sun.xml.internal.fastinfoset.tools.TransformInputOutput$1