Attempt to convert IGenerator to multimethods

Here is the logic where I've changed the IGenerator protocol into a multimethod.