If the access term for the inner class definition is
the element is accessible at package access or
to the other class), then other classes can hold references to one or more
of these inner class objects
static, then it can exist without an outer class object, otherwise any inner class object must belong to an outer class instance.
For code that is not in the outer class, a reference to a
static inner class object must use the outer class name,
a dot, then the inner class name:
If the inner class has an accessible constructor, you can you instantiate one from outside of the enclosing class, although the syntax is ugly, and there is rarely a need for this capability.