public class io.netty.handler.codec.xml.XmlFrameDecoder extends io.netty.handler.codec.ByteToMessageDecoder
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.netty.handler.codec.xml.XmlFrameDecoder
super_class: io.netty.handler.codec.ByteToMessageDecoder
{
private final int maxFrameLength;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 // io.netty.handler.codec.xml.XmlFrameDecoder this
start local 1 // int maxFrameLength
0: .line 74
aload 0 /* this */
invokespecial io.netty.handler.codec.ByteToMessageDecoder.<init>:()V
1: .line 75
iload 1 /* maxFrameLength */
iconst_1
if_icmpge 3
2: .line 76
new java.lang.IllegalArgumentException
dup
ldc "maxFrameLength must be a positive int"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: .line 78
StackMap locals: io.netty.handler.codec.xml.XmlFrameDecoder int
StackMap stack:
aload 0 /* this */
iload 1 /* maxFrameLength */
putfield io.netty.handler.codec.xml.XmlFrameDecoder.maxFrameLength:I
4: .line 79
return
end local 1 // int maxFrameLength
end local 0 // io.netty.handler.codec.xml.XmlFrameDecoder this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/netty/handler/codec/xml/XmlFrameDecoder;
0 5 1 maxFrameLength I
MethodParameters:
Name Flags
maxFrameLength
protected void decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.util.List<java.lang.Object>);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=16, args_size=4
start local 0 // io.netty.handler.codec.xml.XmlFrameDecoder this
start local 1 // io.netty.channel.ChannelHandlerContext ctx
start local 2 // io.netty.buffer.ByteBuf in
start local 3 // java.util.List out
0: .line 83
iconst_0
istore 4 /* openingBracketFound */
start local 4 // boolean openingBracketFound
1: .line 84
iconst_0
istore 5 /* atLeastOneXmlElementFound */
start local 5 // boolean atLeastOneXmlElementFound
2: .line 85
iconst_0
istore 6 /* inCDATASection */
start local 6 // boolean inCDATASection
3: .line 86
lconst_0
lstore 7 /* openBracketsCount */
start local 7 // long openBracketsCount
4: .line 87
iconst_0
istore 9 /* length */
start local 9 // int length
5: .line 88
iconst_0
istore 10 /* leadingWhiteSpaceCount */
start local 10 // int leadingWhiteSpaceCount
6: .line 89
aload 2 /* in */
invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
istore 11 /* bufferLength */
start local 11 // int bufferLength
7: .line 91
iload 11 /* bufferLength */
aload 0 /* this */
getfield io.netty.handler.codec.xml.XmlFrameDecoder.maxFrameLength:I
if_icmple 11
8: .line 93
aload 2 /* in */
aload 2 /* in */
invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
invokevirtual io.netty.buffer.ByteBuf.skipBytes:(I)Lio/netty/buffer/ByteBuf;
pop
9: .line 94
aload 0 /* this */
iload 11 /* bufferLength */
i2l
invokevirtual io.netty.handler.codec.xml.XmlFrameDecoder.fail:(J)V
10: .line 95
return
11: .line 98
StackMap locals: io.netty.handler.codec.xml.XmlFrameDecoder io.netty.channel.ChannelHandlerContext io.netty.buffer.ByteBuf java.util.List int int int long int int int
StackMap stack:
aload 2 /* in */
invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
istore 12 /* i */
start local 12 // int i
12: goto 70
13: .line 99
StackMap locals: int
StackMap stack:
aload 2 /* in */
iload 12 /* i */
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
istore 13 /* readByte */
start local 13 // byte readByte
14: .line 100
iload 4 /* openingBracketFound */
ifne 17
iload 13 /* readByte */
invokestatic java.lang.Character.isWhitespace:(I)Z
ifeq 17
15: .line 102
iinc 10 /* leadingWhiteSpaceCount */ 1
16: .line 103
goto 69
StackMap locals: int
StackMap stack:
17: iload 4 /* openingBracketFound */
ifne 21
iload 13 /* readByte */
bipush 60
if_icmpeq 21
18: .line 105
aload 1 /* ctx */
invokestatic io.netty.handler.codec.xml.XmlFrameDecoder.fail:(Lio/netty/channel/ChannelHandlerContext;)V
19: .line 106
aload 2 /* in */
aload 2 /* in */
invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
invokevirtual io.netty.buffer.ByteBuf.skipBytes:(I)Lio/netty/buffer/ByteBuf;
pop
20: .line 107
return
21: .line 108
StackMap locals:
StackMap stack:
iload 6 /* inCDATASection */
ifne 49
iload 13 /* readByte */
bipush 60
if_icmpne 49
22: .line 109
iconst_1
istore 4 /* openingBracketFound */
23: .line 111
iload 12 /* i */
iload 11 /* bufferLength */
iconst_1
isub
if_icmpge 69
24: .line 112
aload 2 /* in */
iload 12 /* i */
iconst_1
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
istore 14 /* peekAheadByte */
start local 14 // byte peekAheadByte
25: .line 113
iload 14 /* peekAheadByte */
bipush 47
if_icmpne 34
26: .line 115
iload 12 /* i */
iconst_2
iadd
istore 15 /* peekFurtherAheadIndex */
start local 15 // int peekFurtherAheadIndex
27: .line 116
goto 32
28: .line 118
StackMap locals: int int
StackMap stack:
aload 2 /* in */
iload 15 /* peekFurtherAheadIndex */
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 62
if_icmpne 31
29: .line 119
lload 7 /* openBracketsCount */
lconst_1
lsub
lstore 7 /* openBracketsCount */
30: .line 120
goto 69
31: .line 122
StackMap locals:
StackMap stack:
iinc 15 /* peekFurtherAheadIndex */ 1
32: .line 116
StackMap locals:
StackMap stack:
iload 15 /* peekFurtherAheadIndex */
iload 11 /* bufferLength */
iconst_1
isub
if_icmple 28
end local 15 // int peekFurtherAheadIndex
33: .line 124
goto 69
StackMap locals:
StackMap stack:
34: iload 14 /* peekAheadByte */
invokestatic io.netty.handler.codec.xml.XmlFrameDecoder.isValidStartCharForXmlElement:(B)Z
ifeq 38
35: .line 125
iconst_1
istore 5 /* atLeastOneXmlElementFound */
36: .line 128
lload 7 /* openBracketsCount */
lconst_1
ladd
lstore 7 /* openBracketsCount */
37: .line 129
goto 69
StackMap locals:
StackMap stack:
38: iload 14 /* peekAheadByte */
bipush 33
if_icmpne 46
39: .line 130
aload 2 /* in */
iload 12 /* i */
invokestatic io.netty.handler.codec.xml.XmlFrameDecoder.isCommentBlockStart:(Lio/netty/buffer/ByteBuf;I)Z
ifeq 42
40: .line 132
lload 7 /* openBracketsCount */
lconst_1
ladd
lstore 7 /* openBracketsCount */
41: .line 133
goto 69
StackMap locals:
StackMap stack:
42: aload 2 /* in */
iload 12 /* i */
invokestatic io.netty.handler.codec.xml.XmlFrameDecoder.isCDATABlockStart:(Lio/netty/buffer/ByteBuf;I)Z
ifeq 69
43: .line 135
lload 7 /* openBracketsCount */
lconst_1
ladd
lstore 7 /* openBracketsCount */
44: .line 136
iconst_1
istore 6 /* inCDATASection */
45: .line 138
goto 69
StackMap locals:
StackMap stack:
46: iload 14 /* peekAheadByte */
bipush 63
if_icmpne 69
47: .line 140
lload 7 /* openBracketsCount */
lconst_1
ladd
lstore 7 /* openBracketsCount */
end local 14 // byte peekAheadByte
48: .line 143
goto 69
StackMap locals:
StackMap stack:
49: iload 6 /* inCDATASection */
ifne 53
iload 13 /* readByte */
bipush 47
if_icmpne 53
50: .line 144
iload 12 /* i */
iload 11 /* bufferLength */
iconst_1
isub
if_icmpge 69
aload 2 /* in */
iload 12 /* i */
iconst_1
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 62
if_icmpne 69
51: .line 146
lload 7 /* openBracketsCount */
lconst_1
lsub
lstore 7 /* openBracketsCount */
52: .line 148
goto 69
StackMap locals:
StackMap stack:
53: iload 13 /* readByte */
bipush 62
if_icmpne 69
54: .line 149
iload 12 /* i */
iconst_1
iadd
istore 9 /* length */
55: .line 151
iload 12 /* i */
iconst_1
isub
iconst_m1
if_icmple 67
56: .line 152
aload 2 /* in */
iload 12 /* i */
iconst_1
isub
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
istore 14 /* peekBehindByte */
start local 14 // byte peekBehindByte
57: .line 154
iload 6 /* inCDATASection */
ifne 64
58: .line 155
iload 14 /* peekBehindByte */
bipush 63
if_icmpne 61
59: .line 157
lload 7 /* openBracketsCount */
lconst_1
lsub
lstore 7 /* openBracketsCount */
60: .line 158
goto 67
StackMap locals: int
StackMap stack:
61: iload 14 /* peekBehindByte */
bipush 45
if_icmpne 67
iload 12 /* i */
iconst_2
isub
iconst_m1
if_icmple 67
aload 2 /* in */
iload 12 /* i */
iconst_2
isub
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 45
if_icmpne 67
62: .line 160
lload 7 /* openBracketsCount */
lconst_1
lsub
lstore 7 /* openBracketsCount */
63: .line 162
goto 67
StackMap locals:
StackMap stack:
64: iload 14 /* peekBehindByte */
bipush 93
if_icmpne 67
iload 12 /* i */
iconst_2
isub
iconst_m1
if_icmple 67
aload 2 /* in */
iload 12 /* i */
iconst_2
isub
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 93
if_icmpne 67
65: .line 164
lload 7 /* openBracketsCount */
lconst_1
lsub
lstore 7 /* openBracketsCount */
66: .line 165
iconst_0
istore 6 /* inCDATASection */
end local 14 // byte peekBehindByte
67: .line 169
StackMap locals:
StackMap stack:
iload 5 /* atLeastOneXmlElementFound */
ifeq 69
lload 7 /* openBracketsCount */
lconst_0
lcmp
ifne 69
68: .line 171
goto 71
end local 13 // byte readByte
69: .line 98
StackMap locals:
StackMap stack:
iinc 12 /* i */ 1
StackMap locals:
StackMap stack:
70: iload 12 /* i */
iload 11 /* bufferLength */
if_icmplt 13
end local 12 // int i
71: .line 176
StackMap locals:
StackMap stack:
aload 2 /* in */
invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
istore 12 /* readerIndex */
start local 12 // int readerIndex
72: .line 177
iload 9 /* length */
iload 12 /* readerIndex */
isub
istore 13 /* xmlElementLength */
start local 13 // int xmlElementLength
73: .line 179
lload 7 /* openBracketsCount */
lconst_0
lcmp
ifne 80
iload 13 /* xmlElementLength */
ifle 80
74: .line 180
iload 12 /* readerIndex */
iload 13 /* xmlElementLength */
iadd
iload 11 /* bufferLength */
if_icmplt 76
75: .line 181
aload 2 /* in */
invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
istore 13 /* xmlElementLength */
76: .line 184
StackMap locals: int int
StackMap stack:
aload 2 /* in */
iload 12 /* readerIndex */
iload 10 /* leadingWhiteSpaceCount */
iadd
iload 13 /* xmlElementLength */
iload 10 /* leadingWhiteSpaceCount */
isub
invokestatic io.netty.handler.codec.xml.XmlFrameDecoder.extractFrame:(Lio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf;
77: .line 183
astore 14 /* frame */
start local 14 // io.netty.buffer.ByteBuf frame
78: .line 185
aload 2 /* in */
iload 13 /* xmlElementLength */
invokevirtual io.netty.buffer.ByteBuf.skipBytes:(I)Lio/netty/buffer/ByteBuf;
pop
79: .line 186
aload 3 /* out */
aload 14 /* frame */
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 14 // io.netty.buffer.ByteBuf frame
80: .line 188
StackMap locals:
StackMap stack:
return
end local 13 // int xmlElementLength
end local 12 // int readerIndex
end local 11 // int bufferLength
end local 10 // int leadingWhiteSpaceCount
end local 9 // int length
end local 7 // long openBracketsCount
end local 6 // boolean inCDATASection
end local 5 // boolean atLeastOneXmlElementFound
end local 4 // boolean openingBracketFound
end local 3 // java.util.List out
end local 2 // io.netty.buffer.ByteBuf in
end local 1 // io.netty.channel.ChannelHandlerContext ctx
end local 0 // io.netty.handler.codec.xml.XmlFrameDecoder this
LocalVariableTable:
Start End Slot Name Signature
0 81 0 this Lio/netty/handler/codec/xml/XmlFrameDecoder;
0 81 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 81 2 in Lio/netty/buffer/ByteBuf;
0 81 3 out Ljava/util/List<Ljava/lang/Object;>;
1 81 4 openingBracketFound Z
2 81 5 atLeastOneXmlElementFound Z
3 81 6 inCDATASection Z
4 81 7 openBracketsCount J
5 81 9 length I
6 81 10 leadingWhiteSpaceCount I
7 81 11 bufferLength I
12 71 12 i I
14 69 13 readByte B
25 48 14 peekAheadByte B
27 33 15 peekFurtherAheadIndex I
57 67 14 peekBehindByte B
72 81 12 readerIndex I
73 81 13 xmlElementLength I
78 80 14 frame Lio/netty/buffer/ByteBuf;
Exceptions:
throws java.lang.Exception
Signature: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List<Ljava/lang/Object;>;)V
MethodParameters:
Name Flags
ctx
in
out
private void fail(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 // io.netty.handler.codec.xml.XmlFrameDecoder this
start local 1 // long frameLength
0: .line 191
lload 1 /* frameLength */
lconst_0
lcmp
ifle 4
1: .line 192
new io.netty.handler.codec.TooLongFrameException
dup
2: .line 193
new java.lang.StringBuilder
dup
ldc "frame length exceeds "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0 /* this */
getfield io.netty.handler.codec.xml.XmlFrameDecoder.maxFrameLength:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 1 /* frameLength */
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " - discarded"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: .line 192
invokespecial io.netty.handler.codec.TooLongFrameException.<init>:(Ljava/lang/String;)V
athrow
4: .line 195
StackMap locals:
StackMap stack:
new io.netty.handler.codec.TooLongFrameException
dup
5: .line 196
new java.lang.StringBuilder
dup
ldc "frame length exceeds "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0 /* this */
getfield io.netty.handler.codec.xml.XmlFrameDecoder.maxFrameLength:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " - discarding"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: .line 195
invokespecial io.netty.handler.codec.TooLongFrameException.<init>:(Ljava/lang/String;)V
athrow
end local 1 // long frameLength
end local 0 // io.netty.handler.codec.xml.XmlFrameDecoder this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/netty/handler/codec/xml/XmlFrameDecoder;
0 7 1 frameLength J
MethodParameters:
Name Flags
frameLength
private static void fail(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 // io.netty.channel.ChannelHandlerContext ctx
0: .line 201
aload 0 /* ctx */
new io.netty.handler.codec.CorruptedFrameException
dup
ldc "frame contains content before the xml starts"
invokespecial io.netty.handler.codec.CorruptedFrameException.<init>:(Ljava/lang/String;)V
invokeinterface io.netty.channel.ChannelHandlerContext.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelHandlerContext;
pop
1: .line 202
return
end local 0 // io.netty.channel.ChannelHandlerContext ctx
LocalVariableTable:
Start End Slot Name Signature
0 2 0 ctx Lio/netty/channel/ChannelHandlerContext;
MethodParameters:
Name Flags
ctx
private static io.netty.buffer.ByteBuf extractFrame(io.netty.buffer.ByteBuf, int, int);
descriptor: (Lio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 // io.netty.buffer.ByteBuf buffer
start local 1 // int index
start local 2 // int length
0: .line 205
aload 0 /* buffer */
iload 1 /* index */
iload 2 /* length */
invokevirtual io.netty.buffer.ByteBuf.copy:(II)Lio/netty/buffer/ByteBuf;
areturn
end local 2 // int length
end local 1 // int index
end local 0 // io.netty.buffer.ByteBuf buffer
LocalVariableTable:
Start End Slot Name Signature
0 1 0 buffer Lio/netty/buffer/ByteBuf;
0 1 1 index I
0 1 2 length I
MethodParameters:
Name Flags
buffer
index
length
private static boolean isValidStartCharForXmlElement(byte);
descriptor: (B)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 // byte b
0: .line 220
iload 0 /* b */
bipush 97
if_icmplt 1
iload 0 /* b */
bipush 122
if_icmple 3
StackMap locals:
StackMap stack:
1: iload 0 /* b */
bipush 65
if_icmplt 2
iload 0 /* b */
bipush 90
if_icmple 3
StackMap locals:
StackMap stack:
2: iload 0 /* b */
bipush 58
if_icmpeq 3
iload 0 /* b */
bipush 95
if_icmpeq 3
iconst_0
ireturn
StackMap locals:
StackMap stack:
3: iconst_1
ireturn
end local 0 // byte b
LocalVariableTable:
Start End Slot Name Signature
0 4 0 b B
MethodParameters:
Name Flags
b final
private static boolean isCommentBlockStart(io.netty.buffer.ByteBuf, int);
descriptor: (Lio/netty/buffer/ByteBuf;I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 // io.netty.buffer.ByteBuf in
start local 1 // int i
0: .line 224
iload 1 /* i */
aload 0 /* in */
invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
iconst_3
isub
if_icmpge 4
1: .line 225
aload 0 /* in */
iload 1 /* i */
iconst_2
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 45
if_icmpne 4
2: .line 226
aload 0 /* in */
iload 1 /* i */
iconst_3
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 45
if_icmpne 4
3: .line 224
iconst_1
ireturn
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
end local 1 // int i
end local 0 // io.netty.buffer.ByteBuf in
LocalVariableTable:
Start End Slot Name Signature
0 5 0 in Lio/netty/buffer/ByteBuf;
0 5 1 i I
MethodParameters:
Name Flags
in final
i final
private static boolean isCDATABlockStart(io.netty.buffer.ByteBuf, int);
descriptor: (Lio/netty/buffer/ByteBuf;I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 // io.netty.buffer.ByteBuf in
start local 1 // int i
0: .line 230
iload 1 /* i */
aload 0 /* in */
invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
bipush 8
isub
if_icmpge 9
1: .line 231
aload 0 /* in */
iload 1 /* i */
iconst_2
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 91
if_icmpne 9
2: .line 232
aload 0 /* in */
iload 1 /* i */
iconst_3
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 67
if_icmpne 9
3: .line 233
aload 0 /* in */
iload 1 /* i */
iconst_4
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 68
if_icmpne 9
4: .line 234
aload 0 /* in */
iload 1 /* i */
iconst_5
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 65
if_icmpne 9
5: .line 235
aload 0 /* in */
iload 1 /* i */
bipush 6
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 84
if_icmpne 9
6: .line 236
aload 0 /* in */
iload 1 /* i */
bipush 7
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 65
if_icmpne 9
7: .line 237
aload 0 /* in */
iload 1 /* i */
bipush 8
iadd
invokevirtual io.netty.buffer.ByteBuf.getByte:(I)B
bipush 91
if_icmpne 9
8: .line 230
iconst_1
ireturn
StackMap locals:
StackMap stack:
9: iconst_0
ireturn
end local 1 // int i
end local 0 // io.netty.buffer.ByteBuf in
LocalVariableTable:
Start End Slot Name Signature
0 10 0 in Lio/netty/buffer/ByteBuf;
0 10 1 i I
MethodParameters:
Name Flags
in final
i final
}
SourceFile: "XmlFrameDecoder.java"