Built-in alias templates aren't nullability annotations: don't crash checking

PiperOrigin-RevId: 541550114
diff --git a/nullability/type_nullability.cc b/nullability/type_nullability.cc
index 7493e8d..5ef545e 100644
--- a/nullability/type_nullability.cc
+++ b/nullability/type_nullability.cc
@@ -40,6 +40,7 @@
 // user-defined pointer-like types.
 std::optional<NullabilityKind> getAliasNullability(const TemplateName& TN) {
   if (const auto* TD = TN.getAsTemplateDecl()) {
+    if (!TD->getTemplatedDecl()) return std::nullopt;  // BuiltinTemplateDecl
     if (const auto* A = TD->getTemplatedDecl()->getAttr<AnnotateAttr>()) {
       if (A->getAnnotation() == "Nullable") return NullabilityKind::Nullable;
       if (A->getAnnotation() == "Nonnull") return NullabilityKind::NonNull;
diff --git a/nullability/type_nullability_test.cc b/nullability/type_nullability_test.cc
index 844f27d..7f87fc0 100644
--- a/nullability/type_nullability_test.cc
+++ b/nullability/type_nullability_test.cc
@@ -117,6 +117,13 @@
   EXPECT_THAT(nullVec("TripleAlias<int *, int *_Nullable, int*>"),
               ElementsAre(NullabilityKind::NonNull, NullabilityKind::Nullable,
                           NullabilityKind::Unspecified));
+
+  Preamble = R"cpp(
+    template <class... Ts>
+    using First = __type_pack_element<0, Ts...>;
+  )cpp";
+  EXPECT_THAT(nullVec("First<int * _Nonnull>"),
+              ElementsAre(NullabilityKind::NonNull));
 }
 
 TEST_F(GetNullabilityAnnotationsFromTypeTest, DependentAlias) {