@ Override public void sawOpcode ( int seen ) { if ( downwardBranchTarget == - 1 ) { switch ( state ) { case SAW_NOTHING : sawOpcodeAfterNothing ( seen ) ; break ; case SAW_LOAD : sawOpcodeAfterLoad ( seen ) ; break ; case SAW_CHECKCAST : sawOpcodeAfterCheckCast ( seen ) ; break ; } int insTarget = - 1 ; if ( ( ( seen >= Const . IFEQ ) && ( seen <= Const . IF_ACMPNE ) ) || ( seen == Const . GOTO ) || ( seen == Const . GOTO_W ) ) { insTarget = getBranchTarget ( ) ; if ( insTarget < getPC ( ) ) { insTarget = - 1 ; } } else if ( ( seen == Const . LOOKUPSWITCH ) || ( seen == Const . TABLESWITCH ) ) { insTarget = this . getDefaultSwitchOffset ( ) + getPC ( ) ; } if ( insTarget > downwardBranchTarget ) { downwardBranchTarget = insTarget ; } } else { state = State . SAW_NOTHING ; if ( getPC ( ) >= downwardBranchTarget ) { downwardBranchTarget = - 1 ; } } }
implements the visitor to look for check casts of parameters to more specific types