This of course will not work, because we specified explicit receiver – instance of Example (e), and that is against a “private rule”. The current object inside public_m method definition (i.e. self) is the instance of Foo. So why it is not allowed? To fix that I have to change self.