Buggy code:
public class RTCPPacketParserEx extends RTCPPacketParser { private static final Logger logger = Logger . getLogger ( RTCPPacketParserEx . class ) ; public RTCPPacket parse ( byte [ ] data , int offset , int length ) throws BadFormatException { } @ Override protected RTCPPacket parse ( RTCPCompoundPacket base , int firstbyte , int type , int length , DataInputStream in ) throws IOException , BadFormatException { } private RTCPFBPacket parseRTCPFBPacket ( RTCPCompoundPacket base , int firstbyte , int type , int length , DataInputStream in , long senderSSRC , long sourceSSRC ) throws IOException { RTCPFBPacket fb ; <START_BUG> if ( firstbyte == ( NACKPacket . FMT ) ) <END_BUG> fb = new NACKPacket ( base ) ; else fb = new RTCPFBPacket ( base ) ; fb . fmt = firstbyte ; fb . type = type ; fb . senderSSRC = senderSSRC ; fb . sourceSSRC = sourceSSRC ; int fcilen = length - 12 ; if ( fcilen != 0 ) { fb . fci = new byte [ fcilen ] ; in . read ( fb . fci ) ; } if ( RTCPPacketParserEx . logger . isTraceEnabled ( ) ) { String ptStr ; String fmtStr = null ; String detailStr = null ; switch ( fb . type ) { case RTCPFBPacket . PSFB : ptStr = "PSFB" ; switch ( fb . fmt ) { case RTCPFeedbackMessageEvent . FMT_FIR : fmtStr = "FIR" ; break ; case RTCPFeedbackMessageEvent . FMT_PLI : fmtStr = "PLI" ; break ; case RTCPREMBPacket . FMT : fmtStr = "REMB" ; break ; } break ; case RTCPFBPacket . RTPFB : ptStr = "RTPFB" ; switch ( fb . fmt ) { case 1 : fmtStr = "Generic<seq2seq4repair_space>NACK" ; break ; case 3 : fmtStr = "TMMBR" ; break ; case 4 : fmtStr = "TMMBN" ; StringBuilder tmmbnFciEntryStr = new StringBuilder ( ) ; for ( int i = 0 , end = fcilen - 8 ; i < end ; i += 8 ) { int ssrc = RTPTranslatorImpl . readInt ( fb . fci , i ) ; byte b4 = fb . fci [ ( i + 4 ) ] ; int mxTbrExp = ( b4 & 252 ) > > > 2 ; byte b6 = fb . fci [ ( i + 6 ) ] ; int mxTbrMantissa = ( ( ( ( b4 & 1 ) << 16 ) & 16711680 ) | ( ( ( fb . fci [ ( i + 5 ) ] ) << 8 ) & 65280 ) ) | ( b6 & 255 ) ; int measuredOverhead = ( ( ( b6 & 1 ) << 8 ) & 65280 ) | ( ( fb . fci [ ( i + 7 ) ] ) & 255 ) ; tmmbnFciEntryStr . append ( ",<seq2seq4repair_space>SSRC<seq2seq4repair_space>0x" ) ; tmmbnFciEntryStr . append ( Long . toHexString ( ( ssrc & 4294967295L ) ) ) ; tmmbnFciEntryStr . append ( ",<seq2seq4repair_space>MxTBR<seq2seq4repair_space>Exp<seq2seq4repair_space>" ) ; tmmbnFciEntryStr . append ( mxTbrExp ) ; tmmbnFciEntryStr . append ( ",<seq2seq4repair_space>MxTBR<seq2seq4repair_space>Mantissa<seq2seq4repair_space>" ) ; tmmbnFciEntryStr . append ( mxTbrMantissa ) ; tmmbnFciEntryStr . append ( ",<seq2seq4repair_space>Measured<seq2seq4repair_space>Overhead<seq2seq4repair_space>" ) ; tmmbnFciEntryStr . append ( measuredOverhead ) ; } detailStr = tmmbnFciEntryStr . toString ( ) ; break ; } break ; default : ptStr = Integer . toString ( fb . type ) ; break ; } if ( fmtStr == null ) fmtStr = Integer . toString ( fb . fmt ) ; if ( detailStr == null ) detailStr = "" ; RTCPPacketParserEx . logger . trace ( ( ( ( ( ( ( ( ( ( ( ( ( "SSRC<seq2seq4repair_space>of<seq2seq4repair_space>packet<seq2seq4repair_space>sender:<seq2seq4repair_space>0x" + ( Long . toHexString ( senderSSRC ) ) ) + "<seq2seq4repair_space>(" ) + senderSSRC ) + "),<seq2seq4repair_space>SSRC<seq2seq4repair_space>of<seq2seq4repair_space>media<seq2seq4repair_space>source:<seq2seq4repair_space>0x" ) + ( Long . toHexString ( sourceSSRC ) ) ) + "<seq2seq4repair_space>(" ) + sourceSSRC ) + "),<seq2seq4repair_space>Payload<seq2seq4repair_space>type<seq2seq4repair_space>(PT):<seq2seq4repair_space>" ) + ptStr ) + ",<seq2seq4repair_space>Feedback<seq2seq4repair_space>message<seq2seq4repair_space>type<seq2seq4repair_space>(FMT):<seq2seq4repair_space>" ) + fmtStr ) + detailStr ) ) ; } return fb ; } }

Fix:
if ( ( type == ( RTCPFBPacket . RTPFB ) ) && ( firstbyte == ( NACKPacket . FMT ) ) )