Способ сделать это - использовать MethodWrappers или аналогичный. Есть одна вещь, называемая «Объекты как методы», которая поддерживается в некоторых диалектах Smalltalk, таких как Pharo и Squeak (не уверен в других). Идея в том, что вы можете использовать любой объект в качестве метода. Итак, вы можете сделать это:
Метод MyClassDict по адресу: #foo put: MyClassAsMethod new.
И в MyClassMethod вы должны реализовать #run: aSelector с аргументами в: aReceiver
Итак, когда вы делаете: MyClass new foo. Затем виртуальная машина увидит, что то, что у вас есть, это НЕ CompiledMethod, а другой объект, и затем отправит этому объекту сообщение
На вашем месте я бы скачал pharo отсюда: https://gforge.inria.fr/frs/download.php/27524/Pharo-1.1.1-OneClickCogVM.zip
и исследует пакет MethodWrappers и все его классы.