Why does casting fail when c++ function called in blueprints returns c++ base class of blueprint child?

If you have a method in C++ that is BlueprintCallable, and it returns a pointer to myBasePawn, then in Blueprint it will only be a myBasePawn. C++ has no idea that there is another base class of myBasePawnBP, so once you use the BlueprintCallable method, you lose information that myBasePawnBP contains, and only those that remain with myBasePawn exists.