diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp
index 4e71482..44fa2a1 100644
--- a/core/fpdfapi/parser/cpdf_document.cpp
+++ b/core/fpdfapi/parser/cpdf_document.cpp
@@ -459,9 +459,7 @@
     return false;
 
   if (iPage == nPages) {
-    CPDF_Array* pPagesList = pPages->GetArrayFor("Kids");
-    if (!pPagesList)
-      pPagesList = pPages->SetNewFor<CPDF_Array>("Kids");
+    CPDF_Array* pPagesList = GetOrCreateArray(pPages, "Kids");
     pPagesList->AppendNew<CPDF_Reference>(this, pPageDict->GetObjNum());
     pPages->SetNewFor<CPDF_Number>("Count", nPages + 1);
     pPageDict->SetNewFor<CPDF_Reference>("Parent", this, pPages->GetObjNum());
diff --git a/core/fpdfapi/parser/fpdf_parser_utility.cpp b/core/fpdfapi/parser/fpdf_parser_utility.cpp
index cccf189..086ef3d 100644
--- a/core/fpdfapi/parser/fpdf_parser_utility.cpp
+++ b/core/fpdfapi/parser/fpdf_parser_utility.cpp
@@ -93,6 +93,13 @@
   return pObj ? pObj->GetInteger() : 0;
 }
 
+CPDF_Array* GetOrCreateArray(CPDF_Dictionary* dict, const ByteString& key) {
+  CPDF_Array* result = dict->GetArrayFor(key);
+  if (result)
+    return result;
+  return dict->SetNewFor<CPDF_Array>(key);
+}
+
 CPDF_Dictionary* GetOrCreateDict(CPDF_Dictionary* dict, const ByteString& key) {
   CPDF_Dictionary* result = dict->GetDictFor(key);
   if (result)
diff --git a/core/fpdfapi/parser/fpdf_parser_utility.h b/core/fpdfapi/parser/fpdf_parser_utility.h
index 2752610..1bf3c74 100644
--- a/core/fpdfapi/parser/fpdf_parser_utility.h
+++ b/core/fpdfapi/parser/fpdf_parser_utility.h
@@ -47,6 +47,7 @@
 
 int32_t GetDirectInteger(const CPDF_Dictionary* pDict, const ByteString& key);
 
+CPDF_Array* GetOrCreateArray(CPDF_Dictionary* dict, const ByteString& key);
 CPDF_Dictionary* GetOrCreateDict(CPDF_Dictionary* dict, const ByteString& key);
 
 ByteString PDF_NameDecode(ByteStringView orig);
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index 456acea..37a139e 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -743,10 +743,7 @@
 }
 
 void CPDF_FormField::SelectOption(int iOptIndex) {
-  CPDF_Array* pArray = m_pDict->GetArrayFor("I");
-  if (!pArray)
-    pArray = m_pDict->SetNewFor<CPDF_Array>("I");
-
+  CPDF_Array* pArray = GetOrCreateArray(m_pDict.Get(), "I");
   for (size_t i = 0; i < pArray->size(); i++) {
     int iFind = pArray->GetIntegerAt(i);
     if (iFind == iOptIndex)
diff --git a/fpdfsdk/fpdf_annot.cpp b/fpdfsdk/fpdf_annot.cpp
index 817aa00..1889b3b 100644
--- a/fpdfsdk/fpdf_annot.cpp
+++ b/fpdfsdk/fpdf_annot.cpp
@@ -24,6 +24,7 @@
 #include "core/fpdfapi/parser/cpdf_reference.h"
 #include "core/fpdfapi/parser/cpdf_stream.h"
 #include "core/fpdfapi/parser/cpdf_string.h"
+#include "core/fpdfapi/parser/fpdf_parser_utility.h"
 #include "core/fpdfdoc/cpdf_annot.h"
 #include "core/fpdfdoc/cpdf_color_utils.h"
 #include "core/fpdfdoc/cpdf_formfield.h"
@@ -349,9 +350,7 @@
   auto pNewAnnot = std::make_unique<CPDF_AnnotContext>(
       pDict.Get(), IPDFPageFromFPDFPage(page));
 
-  CPDF_Array* pAnnotList = pPage->GetDict()->GetArrayFor("Annots");
-  if (!pAnnotList)
-    pAnnotList = pPage->GetDict()->SetNewFor<CPDF_Array>("Annots");
+  CPDF_Array* pAnnotList = GetOrCreateArray(pPage->GetDict(), "Annots");
   pAnnotList->Append(pDict);
 
   // Caller takes ownership.
@@ -492,10 +491,7 @@
 
   CPDF_Dictionary* annot_dict = GetAnnotDictFromFPDFAnnotation(annot);
 
-  CPDF_Array* inklist = annot_dict->GetArrayFor("InkList");
-  if (!inklist)
-    inklist = annot_dict->SetNewFor<CPDF_Array>("InkList");
-
+  CPDF_Array* inklist = GetOrCreateArray(annot_dict, "InkList");
   FX_SAFE_SIZE_T safe_ink_size = inklist->size();
   safe_ink_size += 1;
   if (!safe_ink_size.IsValid<int32_t>())
