| Index: core/src/fpdfdoc/tagged_int.h
 | 
| diff --git a/core/src/fpdfdoc/tagged_int.h b/core/src/fpdfdoc/tagged_int.h
 | 
| index 7cf368083c96cacc62cfea6b6edbf294b3c60ac9..de6854ea0b8bbf8d294205f011eac64bec7d1bf0 100644
 | 
| --- a/core/src/fpdfdoc/tagged_int.h
 | 
| +++ b/core/src/fpdfdoc/tagged_int.h
 | 
| @@ -10,14 +10,18 @@
 | 
|  #include "../../include/fpdfdoc/fpdf_tagged.h"
 | 
|  
 | 
|  class CPDF_StructElementImpl;
 | 
| +
 | 
|  class CPDF_StructTreeImpl : public CPDF_StructTree {
 | 
|   public:
 | 
| -  CPDF_StructTreeImpl(const CPDF_Document* pDoc);
 | 
| -  ~CPDF_StructTreeImpl();
 | 
| -  int CountTopElements() const { return m_Kids.GetSize(); }
 | 
| -  CPDF_StructElement* GetTopElement(int i) const {
 | 
| +  explicit CPDF_StructTreeImpl(const CPDF_Document* pDoc);
 | 
| +  ~CPDF_StructTreeImpl() override;
 | 
| +
 | 
| +  // CPDF_StructTree
 | 
| +  int CountTopElements() const override { return m_Kids.GetSize(); }
 | 
| +  CPDF_StructElement* GetTopElement(int i) const override {
 | 
|      return (CPDF_StructElement*)m_Kids.GetAt(i);
 | 
|    }
 | 
| +
 | 
|    void LoadDocTree();
 | 
|    void LoadPageTree(const CPDF_Dictionary* pPageDict);
 | 
|    CPDF_StructElementImpl* AddPageNode(CPDF_Dictionary* pElement,
 | 
| @@ -33,46 +37,48 @@ class CPDF_StructTreeImpl : public CPDF_StructTree {
 | 
|    CFX_ArrayTemplate<CPDF_StructElementImpl*> m_Kids;
 | 
|    friend class CPDF_StructElementImpl;
 | 
|  };
 | 
| +
 | 
|  class CPDF_StructElementImpl final : public CPDF_StructElement {
 | 
|   public:
 | 
|    CPDF_StructElementImpl(CPDF_StructTreeImpl* pTree,
 | 
|                           CPDF_StructElementImpl* pParent,
 | 
|                           CPDF_Dictionary* pDict);
 | 
| -  CPDF_StructTree* GetTree() const { return m_pTree; }
 | 
| -  const CFX_ByteString& GetType() const { return m_Type; }
 | 
| -  CPDF_StructElement* GetParent() const { return m_pParent; }
 | 
| -  CPDF_Dictionary* GetDict() const { return m_pDict; }
 | 
| -  int CountKids() const { return m_Kids.GetSize(); }
 | 
| -  const CPDF_StructKid& GetKid(int index) const {
 | 
| +
 | 
| +  // CPDF_StructTreeImpl
 | 
| +  CPDF_StructTree* GetTree() const override { return m_pTree; }
 | 
| +  const CFX_ByteString& GetType() const override { return m_Type; }
 | 
| +  CPDF_StructElement* GetParent() const override { return m_pParent; }
 | 
| +  CPDF_Dictionary* GetDict() const override { return m_pDict; }
 | 
| +  int CountKids() const override { return m_Kids.GetSize(); }
 | 
| +  const CPDF_StructKid& GetKid(int index) const override {
 | 
|      return m_Kids.GetData()[index];
 | 
|    }
 | 
| -  CFX_PtrArray* GetObjectArray() { return &m_ObjectArray; }
 | 
| -
 | 
| +  CFX_PtrArray* GetObjectArray() override { return &m_ObjectArray; }
 | 
|    CPDF_Object* GetAttr(const CFX_ByteStringC& owner,
 | 
|                         const CFX_ByteStringC& name,
 | 
|                         FX_BOOL bInheritable = FALSE,
 | 
| -                       FX_FLOAT fLevel = 0.0F);
 | 
| -
 | 
| +                       FX_FLOAT fLevel = 0.0F) override;
 | 
|    CFX_ByteString GetName(const CFX_ByteStringC& owner,
 | 
|                           const CFX_ByteStringC& name,
 | 
|                           const CFX_ByteStringC& default_value,
 | 
|                           FX_BOOL bInheritable = FALSE,
 | 
| -                         int subindex = -1);
 | 
| +                         int subindex = -1) override;
 | 
|    FX_ARGB GetColor(const CFX_ByteStringC& owner,
 | 
|                     const CFX_ByteStringC& name,
 | 
|                     FX_ARGB default_value,
 | 
|                     FX_BOOL bInheritable = FALSE,
 | 
| -                   int subindex = -1);
 | 
| +                   int subindex = -1) override;
 | 
|    FX_FLOAT GetNumber(const CFX_ByteStringC& owner,
 | 
|                       const CFX_ByteStringC& name,
 | 
|                       FX_FLOAT default_value,
 | 
|                       FX_BOOL bInheritable = FALSE,
 | 
| -                     int subindex = -1);
 | 
| +                     int subindex = -1) override;
 | 
|    int GetInteger(const CFX_ByteStringC& owner,
 | 
|                   const CFX_ByteStringC& name,
 | 
|                   int default_value,
 | 
|                   FX_BOOL bInheritable = FALSE,
 | 
| -                 int subindex = -1);
 | 
| +                 int subindex = -1) override;
 | 
| +
 | 
|    CFX_PtrArray m_ObjectArray;
 | 
|    void LoadKids(CPDF_Dictionary* pDict);
 | 
|    void LoadKid(FX_DWORD PageObjNum, CPDF_Object* pObj, CPDF_StructKid* pKid);
 | 
| @@ -84,7 +90,7 @@ class CPDF_StructElementImpl final : public CPDF_StructElement {
 | 
|    void Release();
 | 
|  
 | 
|   protected:
 | 
| -  ~CPDF_StructElementImpl();
 | 
| +  ~CPDF_StructElementImpl() override;
 | 
|  
 | 
|    CPDF_StructTreeImpl* m_pTree;
 | 
|    CFX_ByteString m_Type;
 | 
| 
 |