diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp
index 1935c73..5c6da1d 100644
--- a/core/fpdfapi/edit/cpdf_creator.cpp
+++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -146,7 +146,6 @@
       m_pParser(pDoc->GetParser()),
       m_bSecurityChanged(false),
       m_pEncryptDict(m_pParser ? m_pParser->GetEncryptDict() : nullptr),
-      m_dwEncryptObjNum(0),
       m_pSecurityHandler(m_pParser ? m_pParser->GetSecurityHandler() : nullptr),
       m_dwLastObjNum(m_pDocument->GetLastObjNum()),
       m_Archive(pdfium::MakeUnique<CFX_FileBufferArchive>(archive)),
@@ -462,7 +461,6 @@
         return -1;
 
       m_ObjectOffsets[m_dwLastObjNum] = saveOffset;
-      m_dwEncryptObjNum = m_dwLastObjNum;
       if (IsIncremental())
         m_NewObjNumArray.push_back(m_dwLastObjNum);
     }
diff --git a/core/fpdfapi/edit/cpdf_creator.h b/core/fpdfapi/edit/cpdf_creator.h
index 2b36fdd..47f279f 100644
--- a/core/fpdfapi/edit/cpdf_creator.h
+++ b/core/fpdfapi/edit/cpdf_creator.h
@@ -35,30 +35,10 @@
 
   void RemoveSecurity();
   bool Create(uint32_t flags);
-  int32_t Continue();
   bool SetFileVersion(int32_t fileVersion);
 
-  IFX_ArchiveStream* GetArchive() { return m_Archive.get(); }
-
-  uint32_t GetNextObjectNumber() { return ++m_dwLastObjNum; }
-  uint32_t GetLastObjectNumber() const { return m_dwLastObjNum; }
-  CPDF_CryptoHandler* GetCryptoHandler();
-  CPDF_Document* GetDocument() const { return m_pDocument.Get(); }
-  CPDF_Array* GetIDArray() const { return m_pIDArray.get(); }
-  CPDF_Dictionary* GetEncryptDict() const { return m_pEncryptDict.Get(); }
-  uint32_t GetEncryptObjectNumber() const { return m_dwEncryptObjNum; }
-
-  uint32_t GetObjectOffset(uint32_t objnum) { return m_ObjectOffsets[objnum]; }
-  bool HasObjectNumber(uint32_t objnum) {
-    return m_ObjectOffsets.find(objnum) != m_ObjectOffsets.end();
-  }
-  void SetObjectOffset(uint32_t objnum, FX_FILESIZE offset) {
-    m_ObjectOffsets[objnum] = offset;
-  }
-  bool IsIncremental() const { return !!(m_dwFlags & FPDFCREATE_INCREMENTAL); }
-  bool IsOriginal() const { return !(m_dwFlags & FPDFCREATE_NO_ORIGINAL); }
-
  private:
+  int32_t Continue();
   void Clear();
 
   void InitNewObjNumOffsets();
@@ -79,13 +59,14 @@
                    uint32_t objnum,
                    CPDF_CryptoHandler* pCrypto);
 
-  bool IsXRefNeedEnd();
+  CPDF_CryptoHandler* GetCryptoHandler();
+  bool IsIncremental() const { return !!(m_dwFlags & FPDFCREATE_INCREMENTAL); }
+  bool IsOriginal() const { return !(m_dwFlags & FPDFCREATE_NO_ORIGINAL); }
 
   UnownedPtr<CPDF_Document> const m_pDocument;
   UnownedPtr<CPDF_Parser> const m_pParser;
   bool m_bSecurityChanged;
   UnownedPtr<CPDF_Dictionary> m_pEncryptDict;
-  uint32_t m_dwEncryptObjNum;
   fxcrt::MaybeOwned<CPDF_SecurityHandler> m_pSecurityHandler;
   UnownedPtr<const CPDF_Object> m_pMetadata;
   uint32_t m_dwLastObjNum;
