diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index e7dee1c..10947c8 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -1805,18 +1805,18 @@
 }
 
 void Document::DoFieldDelay(const WideString& sFieldName, int nControlIndex) {
-  std::vector<std::unique_ptr<CJS_DelayData>> DelayDataForFieldAndControlIndex;
+  std::vector<std::unique_ptr<CJS_DelayData>> delayed_data;
   auto iter = m_DelayData.begin();
   while (iter != m_DelayData.end()) {
     auto old = iter++;
     if ((*old)->sFieldName == sFieldName &&
         (*old)->nControlIndex == nControlIndex) {
-      DelayDataForFieldAndControlIndex.push_back(std::move(*old));
+      delayed_data.push_back(std::move(*old));
       m_DelayData.erase(old);
     }
   }
 
-  for (const auto& pData : DelayDataForFieldAndControlIndex)
+  for (const auto& pData : delayed_data)
     Field::DoDelay(m_pFormFillEnv.Get(), pData.get());
 }
 
diff --git a/fpdfsdk/javascript/Field.h b/fpdfsdk/javascript/Field.h
index bd90ff7..7284153 100644
--- a/fpdfsdk/javascript/Field.h
+++ b/fpdfsdk/javascript/Field.h
@@ -74,6 +74,9 @@
 
 class Field : public CJS_EmbedObj {
  public:
+  static void DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
+                      CJS_DelayData* pData);
+
   explicit Field(CJS_Object* pJSObject);
   ~Field() override;
 
@@ -522,6 +525,9 @@
                          CJS_Value& vRet,
                          WideString& sError);
 
+  bool AttachField(Document* pDocument, const WideString& csFieldName);
+
+ private:
   static void SetAlignment(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const WideString& swFieldName,
                            int nControlIndex,
@@ -677,13 +683,7 @@
       CPDFSDK_FormFillEnvironment* pFormFillEnv,
       const WideString& csFieldName);
 
-  static void DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                      CJS_DelayData* pData);
-
-  bool AttachField(Document* pDocument, const WideString& csFieldName);
   void SetDelay(bool bDelay);
-
- protected:
   void ParseFieldName(const std::wstring& strFieldNameParsed,
                       std::wstring& strFieldName,
                       int& iControlNo);
@@ -704,7 +704,6 @@
 
   void DoDelay();
 
- public:
   Document* m_pJSDoc;
   CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv;
   WideString m_FieldName;
