.addClassAndMethod(this).addField(f));
.addClassAndMethod(this) .addField(f) .addSourceLine(this));
    public void sawOpcode(int seen) {	if (!inConstructor) return;	/*	System.out.println("thisOnTOS:" + thisOnTOS);	System.out.println("seen:" + seen);	*/	if (seen == ALOAD_0)  {		thisOnTOS = true;		/*		System.out.println("set thisOnTOS");		*/		return;		}	/*	if (thisOnTOS && seen == GETFIELD) {		System.out.println("Saw getfield of " + classConstant 				+ "." + nameConstant);		if (initializedFields.contains(nameConstant))		    System.out.println("   initialized");		if (declaredFields.contains(nameConstant))		    System.out.println("   declared");		}	*/				if (seen == PUTFIELD && classConstant.equals(className))		initializedFields.add(FieldAnnotation.fromReferencedField(this));	else if (thisOnTOS && seen == GETFIELD && classConstant.equals(className)) {		FieldAnnotation f = FieldAnnotation.fromReferencedField(this);		if (!initializedFields.contains(f) && declaredFields.contains(f))  {	  		bugReporter.reportBug(new BugInstance("UR_UNINIT_READ", NORMAL_PRIORITY)				.addClassAndMethod(this).addField(f));			  initializedFields.add(FieldAnnotation.fromReferencedField(this));			}		}	else if ((seen == INVOKESPECIAL  			&& !(nameConstant.equals("<init>")					&& !classConstant.equals(className))				)			|| seen == INVOKEVIRTUAL					&& classConstant.equals(className)) {			/*			System.out.println("Saw invocation of " 				+ classConstant + "." + nameConstant				+ " in " + className + "." + methodName);			*/			inConstructor = false;			}        thisOnTOS = false;	}