llvm/clang/test/SemaObjCXX/Inputs/nullability-consistency-smart.h

class _Nullable Smart;

void f1(int * _Nonnull);

void f2(Smart); // OK, not required on smart-pointer types
using Alias = Smart;
void f3(Alias);

template <class T> class _Nullable SmartTmpl;
void f2(SmartTmpl<int>);
template <class T> void f2(SmartTmpl<T>);