In Java, are there clear rules on when to use each of access modifiers, namely the default (package private),