Actually I was going through The Java Language Specification and I found a strange sentence from which I couldn't come to a conclusion. Since I'm not a native English speaker.
If and only if packages are stored in a file system (§7.2), the host system may choose to enforce the restriction that it is a compile-time error if a type is not found in a file under a name composed of the type name plus an extension (such as .java or .jav) if either of the following is true:
• The type is referred to by code in other compilation units of the package in which the type is declared.
• The type is declared public (and therefore is potentially accessible from code in other packages).
could someone please explain the line which is marked in bold by giving an example .Thank you in advance.