bugReporter.reportBug(new BugInstance(this, "MF_CLASS_MASKS_FIELD",
BugInstance bug = new BugInstance(this, "MF_CLASS_MASKS_FIELD",
         public void visit(JavaClass obj) {		classFields.clear();		Field[] fields = obj.getFields();		String fieldName;		for (Field field : fields) if (!field.isStatic() && !field.isPrivate()){			fieldName = field.getName();			classFields.put(fieldName, field);		}				// Walk up the super class chain, looking for name collisions		try {			JavaClass[] superClasses = org.apache.bcel.Repository.getSuperClasses(obj);			for (JavaClass superClass : superClasses) {				fields = superClass.getFields();				for (Field fld : fields) {					if (!fld.isStatic()							&& !maskedFields.contains(fld)							&& (fld.isPublic() || fld.isProtected())) {						fieldName = fld.getName();						if (fieldName.length() == 1)							continue;						if (fieldName.equals("serialVersionUID"))							continue;						if (classFields.containsKey(fieldName)) {							maskedFields.add(fld);							Field maskingField = classFields.get(fieldName);							String mClassName = getDottedClassName();							FieldAnnotation fa = new FieldAnnotation(mClassName, maskingField.getName(),									maskingField.getSignature(),									maskingField.isStatic());							int priority = NORMAL_PRIORITY;							if (maskingField.isStatic()									|| maskingField.isFinal())								priority++;							else if (fld.getSignature().charAt(0) == 'L'									&& !fld.getSignature().startsWith("Ljava/lang/")									|| fld.getSignature().charAt(0) == '[')								priority--;							if (fld.getAccessFlags()									!= maskingField.getAccessFlags())								priority++;							if (!fld.getSignature().equals(maskingField.getSignature()))								priority++;							FieldAnnotation maskedFieldAnnotation									= FieldAnnotation.fromBCELField(superClass.getClassName(), fld);							bugReporter.reportBug(new BugInstance(this, "MF_CLASS_MASKS_FIELD",									priority)									.addClass(this)									.addField(fa)									.describe("FIELD_MASKING")									.addField(maskedFieldAnnotation)									.describe("FIELD_MASKED")									);						}					}				}			}		} catch (ClassNotFoundException e) {			bugReporter.reportMissingClass(e);		}		super.visit(obj);	}