public static boolean implementsSerializable(final ClassEditor ce) {
		if (ce.type().equals(Type.OBJECT)) {
			// Stop the recursion!
			return (false);
		}

		final Type serializable = Type.getType("Ljava/io/Serializable;");
		final Type[] interfaces = ce.interfaces();
		for (int i = 0; i < interfaces.length; i++) {
			if (interfaces[i].equals(serializable)) {
				return (true);
			}
		}

		// Does its superclass implement Serializable?

		final Type superclass = ce.superclass();
		final ClassInfoLoader loader = ce.classInfo().loader();
		try {
			final ClassInfo ci = loader.loadClass(superclass.className());
			final ClassEditor sce = new ClassEditor(ce.context(), ci);
			return (SerialVersionUID.implementsSerializable(sce));

		} catch (final ClassNotFoundException ex) {
			System.err.println("Could not load class: " + superclass
					+ ", superclass of " + ce.name());
			System.exit(1);
		}
		return (false);
	}