Why do I have to get the Child Actor and type Cast a child BP actor?

As seen, I have a blueprint named Gun (it’s named gun_bp in my project folder) in my character hierarchy. In order to call a function from that blueprint, I must both Get Child Actor from the instance of Gun, as well as cast that to the blueprint type I am expecting, gun_bp. Why is this the case? Isn’t Gun technically the blueprint I want to reference? Why are these steps necessary, it’s not obvious to me. I would have assumed that Get Muzzle Loc function could be dragged directly off of the Gun node, instead of needing these intermediary steps.

Thanks