private static JavaProperty<?>[] doGetProperties(Class<?> cls) throws Throwable {
		PropertyPairFactory factory;
		try {
			factory = new PropertyPairFactory(cls);
		}
		catch (IllegalArgumentException e) {
			// skip illegal lookup class
			return new JavaProperty<?>[0];
		}
		return getMethods(cls)
				.filter(PropertyUtils::methodFilter)
				.map(PropertyUtils::toProperty)
				.collect(Collectors.groupingBy(PartialProperty::getName))
				.values()
				.stream()
				.map(factory::merge)
				.flatMap(Optional::stream)
				.toArray(JavaProperty<?>[]::new);
	}
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