What's wrong with leaking un-exported element? Your code wants it to be exported. If you care about it, please return an interface type.
The actual issue, in my opinion, is the weird behavior of the reflect package which allegedly cannot reflect on the leaked element despite its members being publicly accessible anyway.