This should not special case any smart pointer unless it's generalized to all smart pointers. That would involve detecting implementations of the `Deref` and `DerefMut` traits, which may be overkill, so I suggest not doing it entirely. It's pretty rare to have implementations on just smart pointers as the self type.