<?xml version="1.0"?>

<!DOCTYPE MODE SYSTEM "xmode.dtd">

<!--
    Java bytecode mode. Used by Andre Kaplan's JavaInsight plugin.
-->

<MODE>
    <PROPS>
        <PROPERTY NAME="commentStart" VALUE="/*" />
        <PROPERTY NAME="commentEnd" VALUE="*/" />
        <PROPERTY NAME="lineComment" VALUE="//" />
    </PROPS>


    <RULES HIGHLIGHT_DIGITS="TRUE">
        <!-- Silly comment -->
        <SEQ TYPE="COMMENT1">/**/</SEQ>

        <!-- Javadoc comment -->
        <SPAN TYPE="COMMENT3" DELEGATE="JAVADOC">
            <BEGIN>/**</BEGIN>
            <END>*/</END>
        </SPAN>

        <!-- Java comment (C style) -->
        <SPAN TYPE="COMMENT1">
            <BEGIN>/*</BEGIN>
            <END>*/</END>
        </SPAN>

        <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>

        <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
            <BEGIN>'</BEGIN>
            <END>'</END>
        </SPAN>

        <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
            <BEGIN>"</BEGIN>
            <END>"</END>
        </SPAN>

        <MARK_FOLLOWING TYPE="KEYWORD2" AT_LINE_START="FALSE">%</MARK_FOLLOWING>
        <MARK_FOLLOWING TYPE="KEYWORD2" AT_LINE_START="FALSE">#</MARK_FOLLOWING>

        <MARK_PREVIOUS TYPE="LABEL" MATCH_TYPE="OPERATOR"
            AT_LINE_START="TRUE">:</MARK_PREVIOUS>

        <SEQ TYPE="OPERATOR">&gt;</SEQ>
        <SEQ TYPE="OPERATOR">&lt;</SEQ>

        <KEYWORDS>
            <!-- Some java keywords -->
            <KEYWORD1>abstract</KEYWORD1>
            <!-- <KEYWORD1>break</KEYWORD1> -->
            <!-- <KEYWORD1>case</KEYWORD1> -->
            <!-- <KEYWORD1>catch</KEYWORD1> -->
            <!-- <KEYWORD1>continue</KEYWORD1> -->
            <!-- <KEYWORD1>default</KEYWORD1> -->
            <!-- <KEYWORD1>do</KEYWORD1> -->
            <!-- <KEYWORD1>else</KEYWORD1> -->
            <KEYWORD1>extends</KEYWORD1>
            <KEYWORD1>final</KEYWORD1>
            <!-- <KEYWORD1>finally</KEYWORD1> -->
            <!-- <KEYWORD1>for</KEYWORD1> -->
            <!-- <KEYWORD1>if</KEYWORD1> -->
            <KEYWORD1>implements</KEYWORD1>
            <!-- <KEYWORD1>instanceof</KEYWORD1> -->
            <KEYWORD1>native</KEYWORD1>
            <!-- <KEYWORD1>new</KEYWORD1> -->
            <KEYWORD1>private</KEYWORD1>
            <KEYWORD1>protected</KEYWORD1>
            <KEYWORD1>public</KEYWORD1>
            <!-- <KEYWORD1>return</KEYWORD1> -->
            <KEYWORD1>static</KEYWORD1>
            <!-- <KEYWORD1>switch</KEYWORD1> -->
            <KEYWORD1>synchronized</KEYWORD1>
            <KEYWORD1>throw</KEYWORD1>
            <KEYWORD1>throws</KEYWORD1>
            <KEYWORD1>transient</KEYWORD1>
            <!-- <KEYWORD1>try</KEYWORD1> -->
            <KEYWORD1>volatile</KEYWORD1>
            <!-- <KEYWORD1>while</KEYWORD1> -->

            <!-- <KEYWORD2>package</KEYWORD2> -->
            <!-- <KEYWORD2>import</KEYWORD2> -->

            <KEYWORD3>boolean</KEYWORD3>
            <KEYWORD3>byte</KEYWORD3>
            <KEYWORD3>char</KEYWORD3>
            <KEYWORD3>class</KEYWORD3>
            <KEYWORD3>double</KEYWORD3>
            <KEYWORD3>float</KEYWORD3>
            <KEYWORD3>int</KEYWORD3>
            <KEYWORD3>interface</KEYWORD3>
            <KEYWORD3>long</KEYWORD3>
            <KEYWORD3>short</KEYWORD3>
            <KEYWORD3>void</KEYWORD3>

            <!-- <LITERAL2>false</LITERAL2> -->
            <!-- <LITERAL2>null</LITERAL2> -->
            <!-- <LITERAL2>super</LITERAL2> -->
            <!-- <LITERAL2>this</LITERAL2> -->
            <!-- <LITERAL2>true</LITERAL2> -->

            <KEYWORD1>clinit</KEYWORD1>
            <KEYWORD1>init</KEYWORD1>

            <!-- 00 (0x00) --><KEYWORD1>nop</KEYWORD1>
            <!-- 01 (0x01) --><KEYWORD1>aconst_null</KEYWORD1>
            <!-- 02 (0x02) --><KEYWORD1>iconst_m1</KEYWORD1>
            <!-- 03 (0x03) --><KEYWORD1>iconst_0</KEYWORD1>
            <!-- 04 (0x04) --><KEYWORD1>iconst_1</KEYWORD1>
            <!-- 05 (0x05) --><KEYWORD1>iconst_2</KEYWORD1>
            <!-- 06 (0x06) --><KEYWORD1>iconst_3</KEYWORD1>
            <!-- 07 (0x07) --><KEYWORD1>iconst_4</KEYWORD1>
            <!-- 08 (0x08) --><KEYWORD1>iconst_5</KEYWORD1>
            <!-- 09 (0x09) --><KEYWORD1>lconst_0</KEYWORD1>
            <!-- 10 (0x0a) --><KEYWORD1>lconst_1</KEYWORD1>
            <!-- 11 (0x0b) --><KEYWORD1>fconst_0</KEYWORD1>
            <!-- 12 (0x0c) --><KEYWORD1>fconst_1</KEYWORD1>
            <!-- 13 (0x0d) --><KEYWORD1>fconst_2</KEYWORD1>
            <!-- 14 (0x0e) --><KEYWORD1>dconst_0</KEYWORD1>
            <!-- 15 (0x0f) --><KEYWORD1>dconst_1</KEYWORD1>
            <!-- 16 (0x10) --><KEYWORD1>bipush</KEYWORD1>
            <!-- 17 (0x11) --><KEYWORD1>sipush</KEYWORD1>
            <!-- 18 (0x12) --><KEYWORD1>ldc</KEYWORD1>
            <!-- 19 (0x13) --><KEYWORD1>ldc_w</KEYWORD1>
            <!-- 20 (0x14) --><KEYWORD1>ldc2_w</KEYWORD1>
            <!-- 21 (0x15) --><KEYWORD1>iload</KEYWORD1>
            <!-- 22 (0x16) --><KEYWORD1>lload</KEYWORD1>
            <!-- 23 (0x17) --><KEYWORD1>fload</KEYWORD1>
            <!-- 24 (0x18) --><KEYWORD1>dload</KEYWORD1>
            <!-- 25 (0x19) --><KEYWORD1>aload</KEYWORD1>
            <!-- 26 (0x1a) --><KEYWORD1>iload_0</KEYWORD1>
            <!-- 27 (0x1b) --><KEYWORD1>iload_1</KEYWORD1>
            <!-- 28 (0x1c) --><KEYWORD1>iload_2</KEYWORD1>
            <!-- 29 (0x1d) --><KEYWORD1>iload_3</KEYWORD1>
            <!-- 30 (0x1e) --><KEYWORD1>lload_0</KEYWORD1>
            <!-- 31 (0x1f) --><KEYWORD1>lload_1</KEYWORD1>
            <!-- 32 (0x20) --><KEYWORD1>lload_2</KEYWORD1>
            <!-- 33 (0x21) --><KEYWORD1>lload_3</KEYWORD1>
            <!-- 34 (0x22) --><KEYWORD1>fload_0</KEYWORD1>
            <!-- 35 (0x23) --><KEYWORD1>fload_1</KEYWORD1>
            <!-- 36 (0x24) --><KEYWORD1>fload_2</KEYWORD1>
            <!-- 37 (0x25) --><KEYWORD1>fload_3</KEYWORD1>
            <!-- 38 (0x26) --><KEYWORD1>dload_0</KEYWORD1>
            <!-- 39 (0x27) --><KEYWORD1>dload_1</KEYWORD1>
            <!-- 40 (0x28) --><KEYWORD1>dload_2</KEYWORD1>
            <!-- 41 (0x29) --><KEYWORD1>dload_3</KEYWORD1>
            <!-- 42 (0x2a) --><KEYWORD1>aload_0</KEYWORD1>
            <!-- 43 (0x2b) --><KEYWORD1>aload_1</KEYWORD1>
            <!-- 44 (0x2c) --><KEYWORD1>aload_2</KEYWORD1>
            <!-- 45 (0x2d) --><KEYWORD1>aload_3</KEYWORD1>
            <!-- 46 (0x2e) --><KEYWORD1>iaload</KEYWORD1>
            <!-- 47 (0x2f) --><KEYWORD1>laload</KEYWORD1>
            <!-- 48 (0x30) --><KEYWORD1>faload</KEYWORD1>
            <!-- 49 (0x31) --><KEYWORD1>daload</KEYWORD1>
            <!-- 50 (0x32) --><KEYWORD1>aaload</KEYWORD1>
            <!-- 51 (0x33) --><KEYWORD1>baload</KEYWORD1>
            <!-- 52 (0x34) --><KEYWORD1>caload</KEYWORD1>
            <!-- 53 (0x35) --><KEYWORD1>saload</KEYWORD1>
            <!-- 54 (0x36) --><KEYWORD1>istore</KEYWORD1>
            <!-- 55 (0x37) --><KEYWORD1>lstore</KEYWORD1>
            <!-- 56 (0x38) --><KEYWORD1>fstore</KEYWORD1>
            <!-- 57 (0x39) --><KEYWORD1>dstore</KEYWORD1>
            <!-- 58 (0x3a) --><KEYWORD1>astore</KEYWORD1>
            <!-- 59 (0x3b) --><KEYWORD1>istore_0</KEYWORD1>
            <!-- 60 (0x3c) --><KEYWORD1>istore_1</KEYWORD1>
            <!-- 61 (0x3d) --><KEYWORD1>istore_2</KEYWORD1>
            <!-- 62 (0x3e) --><KEYWORD1>istore_3</KEYWORD1>
            <!-- 63 (0x3f) --><KEYWORD1>lstore_0</KEYWORD1>
            <!-- 64 (0x40) --><KEYWORD1>lstore_1</KEYWORD1>
            <!-- 65 (0x41) --><KEYWORD1>lstore_2</KEYWORD1>
            <!-- 66 (0x42) --><KEYWORD1>lstore_3</KEYWORD1>
            <!-- 67 (0x43) --><KEYWORD1>fstore_0</KEYWORD1>
            <!-- 68 (0x44) --><KEYWORD1>fstore_1</KEYWORD1>
            <!-- 69 (0x45) --><KEYWORD1>fstore_2</KEYWORD1>
            <!-- 70 (0x46) --><KEYWORD1>fstore_3</KEYWORD1>
            <!-- 71 (0x47) --><KEYWORD1>dstore_0</KEYWORD1>
            <!-- 72 (0x48) --><KEYWORD1>dstore_1</KEYWORD1>
            <!-- 73 (0x49) --><KEYWORD1>dstore_2</KEYWORD1>
            <!-- 74 (0x4a) --><KEYWORD1>dstore_3</KEYWORD1>
            <!-- 75 (0x4b) --><KEYWORD1>astore_0</KEYWORD1>
            <!-- 76 (0x4c) --><KEYWORD1>astore_1</KEYWORD1>
            <!-- 77 (0x4d) --><KEYWORD1>astore_2</KEYWORD1>
            <!-- 78 (0x4e) --><KEYWORD1>astore_3</KEYWORD1>
            <!-- 79 (0x4f) --><KEYWORD1>iastore</KEYWORD1>
            <!-- 80 (0x50) --><KEYWORD1>lastore</KEYWORD1>
            <!-- 81 (0x51) --><KEYWORD1>fastore</KEYWORD1>
            <!-- 82 (0x52) --><KEYWORD1>dastore</KEYWORD1>
            <!-- 83 (0x53) --><KEYWORD1>aastore</KEYWORD1>
            <!-- 84 (0x54) --><KEYWORD1>bastore</KEYWORD1>
            <!-- 85 (0x55) --><KEYWORD1>castore</KEYWORD1>
            <!-- 86 (0x56) --><KEYWORD1>sastore</KEYWORD1>
            <!-- 87 (0x57) --><KEYWORD1>pop</KEYWORD1>
            <!-- 88 (0x58) --><KEYWORD1>pop2</KEYWORD1>
            <!-- 089 (0x59) --><KEYWORD1>dup</KEYWORD1>
            <!-- 090 (0x5a) --><KEYWORD1>dup_x1</KEYWORD1>
            <!-- 091 (0x5b) --><KEYWORD1>dup_x2</KEYWORD1>
            <!-- 092 (0x5c) --><KEYWORD1>dup2</KEYWORD1>
            <!-- 093 (0x5d) --><KEYWORD1>dup2_x1</KEYWORD1>
            <!-- 094 (0x5e) --><KEYWORD1>dup2_x2</KEYWORD1>
            <!-- 095 (0x5f) --><KEYWORD1>swap</KEYWORD1>
            <!-- 096 (0x60) --><KEYWORD1>iadd</KEYWORD1>
            <!-- 097 (0x61) --><KEYWORD1>ladd</KEYWORD1>
            <!-- 098 (0x62) --><KEYWORD1>fadd</KEYWORD1>
            <!-- 099 (0x63) --><KEYWORD1>dadd</KEYWORD1>
            <!-- 100 (0x64) --><KEYWORD1>isub</KEYWORD1>
            <!-- 101 (0x65) --><KEYWORD1>lsub</KEYWORD1>
            <!-- 102 (0x66) --><KEYWORD1>fsub</KEYWORD1>
            <!-- 103 (0x67) --><KEYWORD1>dsub</KEYWORD1>
            <!-- 104 (0x68) --><KEYWORD1>imul</KEYWORD1>
            <!-- 105 (0x69) --><KEYWORD1>lmul</KEYWORD1>
            <!-- 106 (0x6a) --><KEYWORD1>fmul</KEYWORD1>
            <!-- 107 (0x6b) --><KEYWORD1>dmul</KEYWORD1>
            <!-- 108 (0x6c) --><KEYWORD1>idiv</KEYWORD1>
            <!-- 109 (0x6d) --><KEYWORD1>ldiv</KEYWORD1>
            <!-- 110 (0x6e) --><KEYWORD1>fdiv</KEYWORD1>
            <!-- 111 (0x6f) --><KEYWORD1>ddiv</KEYWORD1>
            <!-- 112 (0x70) --><KEYWORD1>irem</KEYWORD1>
            <!-- 113 (0x71) --><KEYWORD1>lrem</KEYWORD1>
            <!-- 114 (0x72) --><KEYWORD1>frem</KEYWORD1>
            <!-- 115 (0x73) --><KEYWORD1>drem</KEYWORD1>
            <!-- 116 (0x74) --><KEYWORD1>ineg</KEYWORD1>
            <!-- 117 (0x75) --><KEYWORD1>lneg</KEYWORD1>
            <!-- 118 (0x76) --><KEYWORD1>fneg</KEYWORD1>
            <!-- 119 (0x77) --><KEYWORD1>dneg</KEYWORD1>
            <!-- 120 (0x78) --><KEYWORD1>ishl</KEYWORD1>
            <!-- 121 (0x79) --><KEYWORD1>lshl</KEYWORD1>
            <!-- 122 (0x7a) --><KEYWORD1>ishr</KEYWORD1>
            <!-- 123 (0x7b) --><KEYWORD1>lshr</KEYWORD1>
            <!-- 124 (0x7c) --><KEYWORD1>iushr</KEYWORD1>
            <!-- 125 (0x7d) --><KEYWORD1>lushr</KEYWORD1>
            <!-- 126 (0x7e) --><KEYWORD1>iand</KEYWORD1>
            <!-- 127 (0x7f) --><KEYWORD1>land</KEYWORD1>
            <!-- 128 (0x80) --><KEYWORD1>ior</KEYWORD1>
            <!-- 129 (0x81) --><KEYWORD1>lor</KEYWORD1>
            <!-- 130 (0x82) --><KEYWORD1>ixor</KEYWORD1>
            <!-- 131 (0x83) --><KEYWORD1>lxor</KEYWORD1>
            <!-- 132 (0x84) --><KEYWORD1>iinc</KEYWORD1>
            <!-- 133 (0x85) --><KEYWORD1>i2l</KEYWORD1>
            <!-- 134 (0x86) --><KEYWORD1>i2f</KEYWORD1>
            <!-- 135 (0x87) --><KEYWORD1>i2d</KEYWORD1>
            <!-- 136 (0x88) --><KEYWORD1>l2i</KEYWORD1>
            <!-- 137 (0x89) --><KEYWORD1>l2f</KEYWORD1>
            <!-- 138 (0x8a) --><KEYWORD1>l2d</KEYWORD1>
            <!-- 139 (0x8b) --><KEYWORD1>f2i</KEYWORD1>
            <!-- 140 (0x8c) --><KEYWORD1>f2l</KEYWORD1>
            <!-- 141 (0x8d) --><KEYWORD1>f2d</KEYWORD1>
            <!-- 142 (0x8e) --><KEYWORD1>d2i</KEYWORD1>
            <!-- 143 (0x8f) --><KEYWORD1>d2l</KEYWORD1>
            <!-- 144 (0x90) --><KEYWORD1>d2f</KEYWORD1>
            <!-- 145 (0x91) --><KEYWORD1>i2b</KEYWORD1>
            <!-- 146 (0x92) --><KEYWORD1>i2c</KEYWORD1>
            <!-- 147 (0x93) --><KEYWORD1>i2s</KEYWORD1>
            <!-- 148 (0x94) --><KEYWORD1>lcmp</KEYWORD1>
            <!-- 149 (0x95) --><KEYWORD1>fcmpl</KEYWORD1>
            <!-- 150 (0x96) --><KEYWORD1>fcmpg</KEYWORD1>
            <!-- 151 (0x97) --><KEYWORD1>dcmpl</KEYWORD1>
            <!-- 152 (0x98) --><KEYWORD1>dcmpg</KEYWORD1>
            <!-- 153 (0x99) --><KEYWORD1>ifeq</KEYWORD1>
            <!-- 154 (0x9a) --><KEYWORD1>ifne</KEYWORD1>
            <!-- 155 (0x9b) --><KEYWORD1>iflt</KEYWORD1>
            <!-- 156 (0x9c) --><KEYWORD1>ifge</KEYWORD1>
            <!-- 157 (0x9d) --><KEYWORD1>ifgt</KEYWORD1>
            <!-- 158 (0x9e) --><KEYWORD1>ifle</KEYWORD1>
            <!-- 159 (0x9f) --><KEYWORD1>if_icmpeq</KEYWORD1>
            <!-- 160 (0xa0) --><KEYWORD1>if_icmpne</KEYWORD1>
            <!-- 161 (0xa1) --><KEYWORD1>if_icmplt</KEYWORD1>
            <!-- 162 (0xa2) --><KEYWORD1>if_icmpge</KEYWORD1>
            <!-- 163 (0xa3) --><KEYWORD1>if_icmpgt</KEYWORD1>
            <!-- 164 (0xa4) --><KEYWORD1>if_icmple</KEYWORD1>
            <!-- 165 (0xa5) --><KEYWORD1>if_acmpeq</KEYWORD1>
            <!-- 166 (0xa6) --><KEYWORD1>if_acmpne</KEYWORD1>
            <!-- 167 (0xa7) --><KEYWORD1>goto</KEYWORD1>
            <!-- 168 (0xa8) --><KEYWORD1>jsr</KEYWORD1>
            <!-- 169 (0xa9) --><KEYWORD1>ret</KEYWORD1>
            <!-- 170 (0xaa) --><KEYWORD1>tableswitch</KEYWORD1>
            <!-- 171 (0xab) --><KEYWORD1>lookupswitch</KEYWORD1>
            <!-- 172 (0xac) --><KEYWORD1>ireturn</KEYWORD1>
            <!-- 173 (0xad) --><KEYWORD1>lreturn</KEYWORD1>
            <!-- 174 (0xae) --><KEYWORD1>freturn</KEYWORD1>
            <!-- 175 (0xaf) --><KEYWORD1>dreturn</KEYWORD1>
            <!-- 176 (0xb0) --><KEYWORD1>areturn</KEYWORD1>
            <!-- 177 (0xb1) --><KEYWORD1>return</KEYWORD1>
            <!-- 178 (0xb2) --><KEYWORD1>getstatic</KEYWORD1>
            <!-- 179 (0xb3) --><KEYWORD1>putstatic</KEYWORD1>
            <!-- 180 (0xb4) --><KEYWORD1>getfield</KEYWORD1>
            <!-- 181 (0xb5) --><KEYWORD1>putfield</KEYWORD1>
            <!-- 182 (0xb6) --><KEYWORD1>invokevirtual</KEYWORD1>
            <!-- 183 (0xb7) --><KEYWORD1>invokespecial</KEYWORD1>
            <!-- 184 (0xb8) --><KEYWORD1>invokestatic</KEYWORD1>
            <!-- 185 (0xb9) --><KEYWORD1>invokeinterface</KEYWORD1>
            <!-- 186 (0xba) --><!-- xxxunusedxxx -->
            <!-- 187 (0xbb) --><KEYWORD1>new</KEYWORD1>
            <!-- 188 (0xbc) --><KEYWORD1>newarray</KEYWORD1>
            <!-- 189 (0xbd) --><KEYWORD1>anewarray</KEYWORD1>
            <!-- 190 (0xbe) --><KEYWORD1>arraylength</KEYWORD1>
            <!-- 191 (0xbf) --><KEYWORD1>athrow</KEYWORD1>
            <!-- 192 (0xc0) --><KEYWORD1>checkcast</KEYWORD1>
            <!-- 193 (0xc1) --><KEYWORD1>instanceof</KEYWORD1>
            <!-- 194 (0xc2) --><KEYWORD1>monitorenter</KEYWORD1>
            <!-- 195 (0xc3) --><KEYWORD1>monitorexit</KEYWORD1>
            <!-- 196 (0xc4) --><KEYWORD1>wide</KEYWORD1>
            <!-- 197 (0xc5) --><KEYWORD1>multianewarray</KEYWORD1>
            <!-- 198 (0xc6) --><KEYWORD1>ifnull</KEYWORD1>
            <!-- 199 (0xc7) --><KEYWORD1>ifnonnull</KEYWORD1>
            <!-- 200 (0xc8) --><KEYWORD1>goto_w</KEYWORD1>
            <!-- 201 (0xc9) --><KEYWORD1>jsr_w</KEYWORD1>

            <!-- Reserved opcodes: -->
            <!-- 202 (0xca) --><KEYWORD1>breakpoint</KEYWORD1>
            <!-- 254 (0xfe) --><KEYWORD1>impdep1</KEYWORD1>
            <!-- 255 (0xff) --><KEYWORD1>impdep2</KEYWORD1>
        </KEYWORDS>
    </RULES>
</MODE>
