How come you can't do duck typing here? Is there any reason what you give has to be a subclass of Match?