How sendMessage works(under the hood)?

I found Unity’s script system is a little… out of my expectation. For example, even I mark a method private, the ‘sendMessage’ can still invoke it! What sorcery is this? In my limited knowledge, private methods can’t be invoked outside of its class, can it?

SendMessage uses reflection.

–Eric