public static boolean validClass(Class<?> clazz) {
		try {
			Method serialize = clazz.getDeclaredMethod("serialize");
			if (!serialize.getReturnType().equals(String.class)) {
				System.out.println("Class '" + clazz.getCanonicalName() + "' is not serializable because it does not return a String");
				return false;
			}
			if (!Modifier.isPublic(serialize.getModifiers())) {
				System.out.println("Class '" + clazz.getCanonicalName() + "' is not serializable because the method 'serialize' is not public");
				return false;
			}
			if (!Modifier.isStatic(serialize.getModifiers())) {
				System.out.println("Class '" + clazz.getCanonicalName() + "' is not serializable because the method 'serialize' is static");
				return false;
			}

			Method deserialize = clazz.getDeclaredMethod("deserialize", String.class);
			if (!deserialize.getReturnType().equals(clazz)) {
				System.out.println("Class '" + clazz.getCanonicalName() + "' is not deserializable because the method 'deserialize' does not return the class '" + clazz.getCanonicalName() + "'");
				return false;
			}

			if (!Modifier.isStatic(deserialize.getModifiers())) {
				System.out.println("Class '" + clazz.getCanonicalName() + "' is not deserializable because the method 'deserialize' is not static");
				return false;
			}
			if (!Modifier.isPublic(deserialize.getModifiers())) {
				System.out.println("Class '" + clazz.getCanonicalName() + "' is not deserializable because the method 'deserialize' is not public");
				return false;
			}
		} catch (NoSuchMethodException e) {
			System.out.println("Class '" + clazz.getCanonicalName() + "' does not have either the serialize and/or deserialize method(s)");
			return false;
		}
		return true;
	}