Multi-polymorphic programming in bondi ( extended version )