.addClass(signature.replace('/','.')) .addClass(to.replace('/','.'))
.addClass(signatureDot) .addClass(toDot) ); if (abstractCollectionClasses.contains(to) && (signature.equals("java/util/Collection") ||  signature.equals("java/lang/Iterable") ) && !castTo.contains(to)) bugReporter.reportBug(new BugInstance(this, "BC_BAD_CAST_TO_ABSTRACT_COLLECTION", NORMAL_PRIORITY) .addClassAndMethod(this) .addSourceLine(this) .addClass(signatureDot) .addClass(toDot)
	public void sawOpcode(int seen) {		if (stack.getStackDepth() > 0) {		if (seen == CHECKCAST) {		OpcodeStack.Item it = stack.getStackItem(0);		String signature = it.getSignature();		String to = getClassConstantOperand();		if (signature.length() > 0 && signature.charAt(0) == 'L')			signature = signature.substring(1,signature.length()-1);		if (signature.length() > 0 			&& !signature.equals("java/lang/Object") 			&& !signature.equals(to)			&& doNotDowncastTo.contains(to)					&& !castTo.contains(to)) {  bugReporter.reportBug(new BugInstance(this, "BC_BAD_CAST_TO_CONCRETE_COLLECTION", NORMAL_PRIORITY)                                .addClassAndMethod(this)                                .addSourceLine(this)                                .addClass(signature.replace('/','.'))                                .addClass(to.replace('/','.'))				);			}		}		else if (seen == INSTANCEOF) {			String to = getClassConstantOperand();			castTo.add(to);			}		}		stack.sawOpcode(this,seen);	}