Arup, your questions are always interesting, touching on edge cases of the
language. Let me recommend you to purchase "The Ruby Programming Language"
(Flanagan & Matsumoto) and read it from cover to cover.

If I understand it correctly, your underlying question is: how come is this
method private if I did not mark it as such.

Answer is on page 232 of that book. As a rule of thumb, methods are public
unless declared otherwise, **with the exception** of "initialize" and
top-level methods outside a class definition.