I was writing a module with several classes, and found out that classes in the same module can access each other's private methods and even members. Is this by design? If so, then what is protected modifier for? I have read the manual, but didn't understand the difference.