This is (or *was*, at least) a common pattern in Ruby, but I can't figure out how to do it in Zsh or Bash.

Let's suppose I have a shell function called "whoosiwhatsit", and I want to override it in a specific project, while still keeping the original available under a different name.

If I didn't know better, I might try creating an alias to point to whoosiwhatsit, and then create a new "whoosiwhatsit" function that uses the alias. Of course that work, since the alias will refer to the new function instead.

Is there any way to accomplish what I'm talking about?