So, basically what you're saying is that you want the ability to specify when a certain method should be called versus some other method at runtime. Sounds like a candidate for AUTOLOAD, but you're going to be doing a lot of book-keeping yourself. Also, you need to figure out the syntax for how you specify your predicates. Attributes might help you here, but they're not easy to work with.
In other words, you figure out the API you want to use and we'll help you from there. Sounds like a great project. Good luck!