You can call a protected method using an implicit or explicit receiver of the correct type.
You can call a private method only with an implicit receiver (except for self setter methods, for example, self.foo=).
You can call both protected and private methods only from the context of a method handler.