I don't like this growing `if` hell.  I think, we have inverse methods in some function classes just for this purpose.