&& (getSigConstantOperand().startsWith("([B") || getSigConstantOperand().startsWith("([C"))
&& ( getSigConstantOperand().equals("([B)I") || getSigConstantOperand().equals("([BII)I") || getSigConstantOperand().equals("([C)I") || getSigConstantOperand().equals("([CII)I") )
	public void sawOpcode(int seen) {		if (seen == INVOKEVIRTUAL || seen == INVOKEINTERFACE) {			lastCallClass = getDottedClassConstantOperand();			lastCallMethod = getNameConstantOperand();			lastCallSig = getDottedSigConstantOperand();		}		if ((seen == INVOKEVIRTUAL || seen == INVOKEINTERFACE)		        && getNameConstantOperand().equals("available")		        && getSigConstantOperand().equals("()I")		        || (seen == INVOKEVIRTUAL || seen == INVOKEINTERFACE)		        && getNameConstantOperand().startsWith("get")		        && getNameConstantOperand().endsWith("Length")		        && getSigConstantOperand().equals("()I")		        || (seen == INVOKEVIRTUAL || seen == INVOKEINTERFACE)		        && getClassConstantOperand().equals("java/io/File")		        && getNameConstantOperand().equals("length")		        && getSigConstantOperand().equals("()J")) {			sawAvailable = 70;			return;		}		sawAvailable--;		if ((seen == INVOKEVIRTUAL || seen == INVOKEINTERFACE)		        && !getClassConstantOperand().equals("java/io/ByteArrayInputStream")		        && getNameConstantOperand().equals("read")		        && (getSigConstantOperand().startsWith("([B")		        || getSigConstantOperand().startsWith("([C"))		        && sawAvailable <= 0) {			/*			System.out.println("Saw invocation of "				+ getNameConstantOperand() + "("				+ getSigConstantOperand()				+"), available = " + sawAvailable);			*/			boolean b = false;			try {				b = Repository.instanceOf(getDottedClassConstantOperand(), "java.io.ByteArrayInputStream");			} catch (ClassNotFoundException e) {			}			if (!b) {				sawRead = true;				readPC = getPC();				return;			}		} else if ((seen == INVOKEVIRTUAL || seen == INVOKEINTERFACE)		        && !getClassConstantOperand().equals("java/io/ByteArrayInputStream")		        && getNameConstantOperand().equals("skip")) {			boolean bais = false;			boolean bis = false;			try {				bais = Repository.instanceOf(getDottedClassConstantOperand(), "java.io.ByteArrayInputStream");				bis = Repository.instanceOf(getDottedClassConstantOperand(), "java.io.BufferedInputStream");			} catch (ClassNotFoundException e) {			}			// if not ByteArrayInput Stream			//  and either no recent calls to length			//        or it is a BufferedInputStream			if (!bais && (sawAvailable <= 0 || bis)) {				isBufferedInputStream = bis;				sawSkip = true;				skipPC = getPC();				return;			}		}		if ((seen == POP) || (seen == POP2)) {			if (sawRead) {				bugReporter.reportBug(new BugInstance(this, "RR_NOT_CHECKED", NORMAL_PRIORITY)				        .addClassAndMethod(this)				        .addCalledMethod(lastCallClass, lastCallMethod, lastCallSig)				        .addSourceLine(this, readPC));			} else if (sawSkip) {				boolean isBufferedInputStream = false;				try {					isBufferedInputStream = Repository.instanceOf(lastCallClass, "java.io.BufferedInputStream");				} catch (ClassNotFoundException e) {				}				bugReporter.reportBug(new BugInstance(this, "SR_NOT_CHECKED",				        (isBufferedInputStream ? HIGH_PRIORITY : NORMAL_PRIORITY))				        .addClassAndMethod(this)				        .addCalledMethod(lastCallClass, lastCallMethod, lastCallSig)				        .addSourceLine(this, skipPC));			}		}		sawRead = false;		sawSkip = false;	}