}
    public void visit(JavaClass obj)     {      	int flags = obj.getAccessFlags();	isAbstract = (flags & ACC_ABSTRACT) != 0 			   || (flags & ACC_INTERFACE) != 0;        sawSerialVersionUID = false;        isSerializable = implementsSerializableDirectly = false;	isExternalizable = false;	directlyImplementsExternalizable = false;	isGUIClass = false;	isRemote = false;        // Does this class directly implement Serializable?        String [] interface_names = obj.getInterfaceNames();        for(int i=0; i < interface_names.length; i++) {            if (interface_names[i].equals("java.io.Externalizable")) {		directlyImplementsExternalizable = true;                isExternalizable = true;		// System.out.println("Directly implements Externalizable: " + betterClassName);		}            else if (interface_names[i].equals("java.io.Serializable")) {		implementsSerializableDirectly = true;                isSerializable = true;		break;                }            }        // Does this class indirectly implement Serializable?	if (!isSerializable) {	    try {	        if (Repository.instanceOf(obj,"java.io.Externalizable"))		    isExternalizable = true;	        if (Repository.instanceOf(obj,"java.io.Serializable"))		    isSerializable = true;	        if (Repository.instanceOf(obj,"java.rmi.Remote")) {		    isRemote = true;		    }	    } catch (ClassNotFoundException e) {		bugReporter.reportMissingClass(e);	    }	}        hasPublicVoidConstructor = false;        superClassHasVoidConstructor = true;        superClassImplementsSerializable = isSerializable && !implementsSerializableDirectly;	try {	    JavaClass superClass = obj.getSuperClass();	    if (superClass != null) {		Method [] superClassMethods = superClass.getMethods();		superClassImplementsSerializable = Repository.instanceOf(superClass,					"java.io.Serializable");	        superClassHasVoidConstructor = false;		for(int i = 0; i < superClassMethods.length; i++) {			Method m = superClassMethods[i];			/*			System.out.println("Supercase has method named " + m.getName()				+ " with sig " + m.getSignature());			*/			if (m.getName().equals("<init>")				 && m.getSignature().equals("()V")				 && m.isPublic()				)			  superClassHasVoidConstructor = true;			}		}	} catch (ClassNotFoundException e) {	    bugReporter.reportMissingClass(e);	}	if (isSerializable && !isExternalizable		&& !superClassHasVoidConstructor 		&& !superClassImplementsSerializable)		bugReporter.reportBug(new BugInstance("SE_NO_SUITABLE_CONSTRUCTOR", implementsSerializableDirectly ?					HIGH_PRIORITY : NORMAL_PRIORITY)			.addClass(thisClass.getClassName()));	// Is this a GUI class?	try {	    isGUIClass = Repository.instanceOf(obj, "java.awt.Component");	} catch (ClassNotFoundException e) {	    bugReporter.reportMissingClass(e);	}	foundSynthetic = false;	foundSynchronizedMethods = false;	writeObjectIsSynchronized = false;	sawReadExternal = sawWriteExternal = sawReadObject = sawWriteObject = false;	}