The opens directive in a module declaration declares a
package to be open to allow all types in the package, and all their
members, not just public types and their public members to be reflected
on by APIs that support private access or a way to bypass or suppress
default Java language access control checks.

compareTo

Two Opens objects are compared by comparing the package
names lexicographically. Where the packages names are equal then the
sets of modifiers are compared in the same way that module modifiers
are compared (see ModuleDescriptor.compareTo). Where the package names are equal and
the set of modifiers are equal then the set of target modules are
compared. This is done by sorting the names of the target modules
in ascending order, and according to their natural ordering, and then
comparing the corresponding elements lexicographically. Where the
sets differ in size, and the larger set contains all elements of the
smaller set, then the larger set is considered to succeed the smaller
set.

A negative integer, zero, or a positive integer if this module
opens is less than, equal to, or greater than the given
module opens

hashCode

public int hashCode()

Computes a hash code for this module opens.

The hash code is based upon the modifiers, the package name,
and for a qualified opens, the set of modules names to which the
package is opened. It satisfies the general contract of the
Object.hashCode method.

equals

If the given object is not an Opens then this method
returns false. Two Opens objects are equal if their
set of modifiers is equal, the package names are equal and the set
of target module names is equal.

This method satisfies the general contract of the Object.equals method.