diff --git a/core/fpdfdoc/cpdf_nametree.cpp b/core/fpdfdoc/cpdf_nametree.cpp
index 87d9972..c113872 100644
--- a/core/fpdfdoc/cpdf_nametree.cpp
+++ b/core/fpdfdoc/cpdf_nametree.cpp
@@ -353,25 +353,24 @@
   return nCount;
 }
 
-CPDF_Array* GetNamedDestFromObject(CPDF_Object* obj) {
+const CPDF_Array* GetNamedDestFromObject(const CPDF_Object* obj) {
   if (!obj)
     return nullptr;
-  CPDF_Array* array = obj->AsArray();
+  const CPDF_Array* array = obj->AsArray();
   if (array)
     return array;
-  CPDF_Dictionary* dict = obj->AsDictionary();
+  const CPDF_Dictionary* dict = obj->AsDictionary();
   if (dict)
-    return dict->GetMutableArrayFor("D").Get();  // TODO(tsepez): retain.
+    return dict->GetArrayFor("D");
   return nullptr;
 }
 
-CPDF_Array* LookupOldStyleNamedDest(CPDF_Document* pDoc,
-                                    const ByteString& name) {
-  RetainPtr<CPDF_Dictionary> pDests =
-      pDoc->GetMutableRoot()->GetMutableDictFor("Dests");
+const CPDF_Array* LookupOldStyleNamedDest(CPDF_Document* pDoc,
+                                          const ByteString& name) {
+  const CPDF_Dictionary* pDests = pDoc->GetRoot()->GetDictFor("Dests");
   if (!pDests)
     return nullptr;
-  return GetNamedDestFromObject(pDests->GetMutableDirectObjectFor(name).Get());
+  return GetNamedDestFromObject(pDests->GetDirectObjectFor(name));
 }
 
 }  // namespace
@@ -437,9 +436,9 @@
 }
 
 // static
-CPDF_Array* CPDF_NameTree::LookupNamedDest(CPDF_Document* pDoc,
-                                           const ByteString& name) {
-  CPDF_Array* dest_array = nullptr;
+const CPDF_Array* CPDF_NameTree::LookupNamedDest(CPDF_Document* pDoc,
+                                                 const ByteString& name) {
+  const CPDF_Array* dest_array = nullptr;
   std::unique_ptr<CPDF_NameTree> name_tree = Create(pDoc, "Dests");
   if (name_tree)
     dest_array = name_tree->LookupNewStyleNamedDest(name);
@@ -546,7 +545,8 @@
   return SearchNameNodeByName(m_pRoot, csName, nullptr, nullptr);
 }
 
-CPDF_Array* CPDF_NameTree::LookupNewStyleNamedDest(const ByteString& sName) {
+const CPDF_Array* CPDF_NameTree::LookupNewStyleNamedDest(
+    const ByteString& sName) {
   return GetNamedDestFromObject(
       LookupValue(PDF_DecodeText(sName.raw_span())).Get());
 }
diff --git a/core/fpdfdoc/cpdf_nametree.h b/core/fpdfdoc/cpdf_nametree.h
index 144fd9e..9ee41e2 100644
--- a/core/fpdfdoc/cpdf_nametree.h
+++ b/core/fpdfdoc/cpdf_nametree.h
@@ -38,8 +38,8 @@
   static std::unique_ptr<CPDF_NameTree> CreateForTesting(
       CPDF_Dictionary* pRoot);
 
-  static CPDF_Array* LookupNamedDest(CPDF_Document* doc,
-                                     const ByteString& name);
+  static const CPDF_Array* LookupNamedDest(CPDF_Document* doc,
+                                           const ByteString& name);
 
   bool AddValueAndName(RetainPtr<CPDF_Object> pObj, const WideString& name);
   bool DeleteValueAndName(size_t nIndex);
@@ -53,7 +53,7 @@
  private:
   explicit CPDF_NameTree(RetainPtr<CPDF_Dictionary> pRoot);
 
-  CPDF_Array* LookupNewStyleNamedDest(const ByteString& name);
+  const CPDF_Array* LookupNewStyleNamedDest(const ByteString& name);
 
   RetainPtr<CPDF_Dictionary> const m_pRoot;
 };
diff --git a/fxjs/cjs_document.cpp b/fxjs/cjs_document.cpp
index 83e61eb..d06db72 100644
--- a/fxjs/cjs_document.cpp
+++ b/fxjs/cjs_document.cpp
@@ -1381,7 +1381,7 @@
     return CJS_Result::Failure(JSMessage::kBadObjectError);
 
   CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument();
-  CPDF_Array* dest_array = CPDF_NameTree::LookupNamedDest(
+  const CPDF_Array* dest_array = CPDF_NameTree::LookupNamedDest(
       pDocument, pRuntime->ToByteString(params[0]));
   if (!dest_array)
     return CJS_Result::Failure(JSMessage::kBadObjectError);
