add more tests and documentation example for polymorphic_pointer_downcast