isGUIClass = Repository.instanceOf(obj, "java.awt.Component");
isGUIClass = Repository.instanceOf(obj, "java.lang.Throwable") || Repository.instanceOf(obj, "java.awt.Component") || Repository.implementationOf(obj, "java.awt.event.ActionListener") || Repository.implementationOf(obj, "java.util.EventListener") ;
	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];					/*					if (!m.isPrivate())					System.out.println("Supercase of " + className						+ " has an accessible method named " + m.getName()						+ " with sig " + m.getSignature());					*/					if (m.getName().equals("<init>")					        && m.getSignature().equals("()V")					        && !m.isPrivate()					) {						// System.out.println("  super has void constructor");						superClassHasVoidConstructor = true;						break;					}				}			}		} catch (ClassNotFoundException e) {			bugReporter.reportMissingClass(e);		}		// 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;	}