HV-698 Implementing unwrap() methods to allow unwrapping to public super types but not internal implementations