Multi-methods and records