private static boolean methodFilter(Method m) {
		/*
		This is much simpler than it looks.
		
		A method is considered a getter/setter if it meets the following:

		1. Has public visibility and is not static.
		2. Has a name starting with lowercase get/set/is with the character after
		   the prefix being uppercase.
		3. A getter has 0 parameters and a non-void return type.
		   A setter has 1 parameter and must not return anything.
		   An is getter must return a boolean or Boolean.
		4. The method name must be longer than the prefix.

		The first few checks are done to short circuit and return false sooner rather than later.
		*/
		 
		if (!isPublic(m)) {
			return false;
		}

		int paramCount = m.getParameterCount();
		if (paramCount > 1) {
			return false;
		}

		Class<?> resultType = m.getReturnType();
		String name = m.getName();
		int nameLength = name.length();
		if (nameLength < 3) {
			return false;
		}
		switch (name.charAt(0)) {
			case 'g':
				if (paramCount == 0 && resultType != Void.TYPE) {
					if (nameLength > 3 && name.startsWith("get")) {
						return Character.isUpperCase(name.charAt(3));
					}
				}
				return false;
			case 'i':
				if (paramCount == 0 &&
					(resultType == Boolean.TYPE || resultType == Boolean.class)) {
					if (nameLength > 2 && name.startsWith("is")) {
						return Character.isUpperCase(name.charAt(2));
					}
				}
				return false;
			case 's':
				if (paramCount == 1 && resultType == Void.TYPE) {
					if (nameLength > 3 && name.startsWith("set")) {
						return Character.isUpperCase(name.charAt(3));
					}
				}
				return false;
			default:
				return false;
		}
	}
Gets an array of {@link JavaProperty} for the provided class.

This method is for <b>internal use only</b> and is only public
so it can be called from Python.

@param cls the class to get the properties for
@return an array of properties
Ghidra/Features/PyGhidra/src/main/java/ghidra/pyghidra/property/PropertyUtils.java