Utility class for retrieving declared fields or methods in a particular order, because the JVM
doesn't guarantee ordering for listing declared methods. We don't externally guarantee an
ordering, but having a consistent ordering allows deterministic behavior and simpler tests.
For class ordering, within a single classloader there can only be one class with a given name,
so we just compare the names.
For method ordering, within a single class it is sufficient to compare the non-generic method
signature which consists of the name, return type and parameter types.