Add support for polymorphic matchers. Use runtime type checking to determine the right polymorphic overload to use.