diff --git a/Common/DataModel/CMakeLists.txt b/Common/DataModel/CMakeLists.txt
index 9992bf51063ce89088466d9eb8aa27b217ca6c78..7441526485ff5995021bec25b9778611c73150cc 100644
--- a/Common/DataModel/CMakeLists.txt
+++ b/Common/DataModel/CMakeLists.txt
@@ -68,9 +68,6 @@ set(Module_SRCS
   vtkHexahedron.cxx
   vtkHierarchicalBoxDataIterator.cxx
   vtkHierarchicalBoxDataSet.cxx
-  vtkHyperOctreeCursor.cxx
-  vtkHyperOctree.cxx
-  vtkHyperOctreePointsGrabber.cxx
   vtkHyperTree.cxx
   vtkHyperTreeCursor.cxx
   vtkHyperTreeGrid.cxx
@@ -222,6 +219,14 @@ set(Module_SRCS
   vtkUniformGridAMRDataIterator.cxx
   )
 
+if (NOT VTK_LEGACY_REMOVE)
+  list(APPEND Module_SRCS
+    vtkHyperOctree.cxx
+    vtkHyperOctreeCursor.cxx
+    vtkHyperOctreePointsGrabber.cxx
+  )
+endif()
+
 set(${vtk-module}_HDRS
   vtkArrayListTemplate.h
   vtkCellType.h
diff --git a/Common/DataModel/vtkDataObjectTypes.cxx b/Common/DataModel/vtkDataObjectTypes.cxx
index 749239c08de9d7a358da14fcbc83d15b1dbd1e4d..8191243f5db51e31903a4f7b73797ad389531a60 100644
--- a/Common/DataModel/vtkDataObjectTypes.cxx
+++ b/Common/DataModel/vtkDataObjectTypes.cxx
@@ -31,7 +31,9 @@ PURPOSE.  See the above copyright notice for more information.
 #include  "vtkHierarchicalBoxDataSet.h"
 #include  "vtkOverlappingAMR.h"
 #include  "vtkNonOverlappingAMR.h"
+#if !defined(VTK_LEGACY_REMOVE)
 #include  "vtkHyperOctree.h"
+#endif // LEGACY remove
 #include  "vtkHyperTreeGrid.h"
 #include  "vtkImageData.h"
 #include  "vtkMultiBlockDataSet.h"
@@ -77,7 +79,7 @@ static const char* vtkDataObjectTypesStrings[] = {
   "vtkHierarchicalDataSet", // OBSOLETE
   "vtkHierarchicalBoxDataSet", // OBSOLETE
   "vtkGenericDataSet",
-  "vtkHyperOctree",
+  "vtkHyperOctree", // OBSOLETE
   "vtkTemporalDataSet",//OBSOLETE
   "vtkTable",
   "vtkGraph",
@@ -216,10 +218,12 @@ vtkDataObject* vtkDataObjectTypes::NewDataObject(const char* type)
   {
     return vtkNonOverlappingAMR::New();
   }
+#if !defined(VTK_LEGACY_REMOVE)
   else if(strcmp(type, "vtkHyperOctree") == 0)
   {
     return vtkHyperOctree::New();
   }
+#endif // LEGACY remove
   else if(strcmp(type, "vtkHyperTreeGrid") == 0)
   {
     return vtkHyperTreeGrid::New();
diff --git a/Common/DataModel/vtkHyperOctree.cxx b/Common/DataModel/vtkHyperOctree.cxx
index 1bb596b84c09e457fc93601f179252868f70e99d..82289a3e6972ac40626a71f1e8400153dbd04b15 100644
--- a/Common/DataModel/vtkHyperOctree.cxx
+++ b/Common/DataModel/vtkHyperOctree.cxx
@@ -960,6 +960,8 @@ vtkStandardNewMacro(vtkHyperOctree);
 // Default constructor.
 vtkHyperOctree::vtkHyperOctree()
 {
+  VTK_LEGACY_BODY(vtkHyperOctree, "VTK 8.1");
+
   this->DualGridFlag = 1;
   this->Dimension=3;
 
diff --git a/Common/DataModel/vtkHyperOctree.h b/Common/DataModel/vtkHyperOctree.h
index f3cef11d2422869f580fc6d73c2e7858551b7fc1..c5de97fe59be3b1d58bd7ce03bf95c8c58736f93 100644
--- a/Common/DataModel/vtkHyperOctree.h
+++ b/Common/DataModel/vtkHyperOctree.h
@@ -140,6 +140,7 @@ class vtkPixel;
 class vtkVoxel;
 class vtkCellLinks;
 
+#if !defined(VTK_LEGACY_REMOVE)
 class VTKCOMMONDATAMODEL_EXPORT vtkHyperOctree : public vtkDataSet
 {
 public:
@@ -631,5 +632,6 @@ private:
   unsigned short IsLeaf;
   unsigned short Level;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Common/DataModel/vtkHyperOctreeCursor.cxx b/Common/DataModel/vtkHyperOctreeCursor.cxx
index e3de8706645380b6bfecd3eb42a6df51ab5b401a..414be543520b4331065b2d99dbe78b39fbbc93bf 100644
--- a/Common/DataModel/vtkHyperOctreeCursor.cxx
+++ b/Common/DataModel/vtkHyperOctreeCursor.cxx
@@ -19,6 +19,7 @@
 // Constructor.
 vtkHyperOctreeCursor::vtkHyperOctreeCursor()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeCursor, "VTK 8.1");
 }
 
 //-----------------------------------------------------------------------------
diff --git a/Common/DataModel/vtkHyperOctreeCursor.h b/Common/DataModel/vtkHyperOctreeCursor.h
index d87c55994656146aabb7b6cf38cd5bb2616ce374..38755ecca2251291d7115f8c6e18c08b0f775a81 100644
--- a/Common/DataModel/vtkHyperOctreeCursor.h
+++ b/Common/DataModel/vtkHyperOctreeCursor.h
@@ -28,6 +28,7 @@
 #include "vtkCommonDataModelModule.h" // For export macro
 #include "vtkObject.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 enum
 {
   VTK_OCTREE_CHILD_ZMIN_YMIN_XMIN=0,
@@ -182,4 +183,6 @@ private:
   vtkHyperOctreeCursor(const vtkHyperOctreeCursor&) = delete;
   void operator=(const vtkHyperOctreeCursor&) = delete;
 };
+#endif // LEGACY remove
+
 #endif
diff --git a/Common/DataModel/vtkHyperOctreePointsGrabber.cxx b/Common/DataModel/vtkHyperOctreePointsGrabber.cxx
index a73ae17c9507514adfd8a1383ad6f2f70656bfbe..7a2098998c7eaf629359a61707ad1a9ddb2ea849 100644
--- a/Common/DataModel/vtkHyperOctreePointsGrabber.cxx
+++ b/Common/DataModel/vtkHyperOctreePointsGrabber.cxx
@@ -21,6 +21,7 @@
 // Default constructor.
 vtkHyperOctreePointsGrabber::vtkHyperOctreePointsGrabber()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreePointsGrabber, "VTK 8.1");
   this->Dimension=3;
 }
 
diff --git a/Common/DataModel/vtkHyperOctreePointsGrabber.h b/Common/DataModel/vtkHyperOctreePointsGrabber.h
index 26f01de3ebe05b065b89183b6a3eb992efc3f70b..da2fd0416ba86a1b2ccaeb2f2f8a681b0c8889d3 100644
--- a/Common/DataModel/vtkHyperOctreePointsGrabber.h
+++ b/Common/DataModel/vtkHyperOctreePointsGrabber.h
@@ -32,6 +32,7 @@
 #include "vtkCommonDataModelModule.h" // For export macro
 #include "vtkObject.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class VTKCOMMONDATAMODEL_EXPORT vtkHyperOctreePointsGrabber : public vtkObject
 {
 public:
@@ -97,5 +98,6 @@ private:
   vtkHyperOctreePointsGrabber(const vtkHyperOctreePointsGrabber&) = delete;
   void operator=(const vtkHyperOctreePointsGrabber&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Common/ExecutionModel/CMakeLists.txt b/Common/ExecutionModel/CMakeLists.txt
index e334e919fe452456a9234bc8a5e242a11e9c76c8..1eb277036193559fc304adaebbf4c78e8a713d4c 100644
--- a/Common/ExecutionModel/CMakeLists.txt
+++ b/Common/ExecutionModel/CMakeLists.txt
@@ -18,7 +18,6 @@ SET(Module_SRCS
   vtkFilteringInformationKeyManager.cxx
   vtkGraphAlgorithm.cxx
   vtkHierarchicalBoxDataSetAlgorithm.cxx
-  vtkHyperOctreeAlgorithm.cxx
   vtkHyperTreeGridAlgorithm.cxx
   vtkImageAlgorithm.cxx
   vtkImageInPlaceFilter.cxx
@@ -64,6 +63,13 @@ SET(Module_SRCS
   vtkNonOverlappingAMRAlgorithm.cxx
   )
 
+
+if (NOT VTK_LEGACY_REMOVE)
+  list(APPEND Module_SRCS
+    vtkHyperOctreeAlgorithm.cxx
+  )
+endif()
+
 set_source_files_properties(
   vtkExecutive
   vtkHyperOctreeAlgorithm
diff --git a/Common/ExecutionModel/vtkHyperOctreeAlgorithm.cxx b/Common/ExecutionModel/vtkHyperOctreeAlgorithm.cxx
index a53907af7cb71f22581ff839fecb5e8dfc3ea33e..04b4a760de21d0e40cb5c36e7b2ed4a7719edb70 100644
--- a/Common/ExecutionModel/vtkHyperOctreeAlgorithm.cxx
+++ b/Common/ExecutionModel/vtkHyperOctreeAlgorithm.cxx
@@ -25,6 +25,7 @@
 //----------------------------------------------------------------------------
 vtkHyperOctreeAlgorithm::vtkHyperOctreeAlgorithm()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeAlgorithm, "VTK 8.1");
   // by default assume filters have one input and one output
   // subclasses that deviate should modify this setting
   this->SetNumberOfInputPorts(1);
diff --git a/Common/ExecutionModel/vtkHyperOctreeAlgorithm.h b/Common/ExecutionModel/vtkHyperOctreeAlgorithm.h
index f1965bb9cdd09c52b0ee31458c91553bd89ba4a5..5a05a59e4bc5397b44176b844dd97c6df938166b 100644
--- a/Common/ExecutionModel/vtkHyperOctreeAlgorithm.h
+++ b/Common/ExecutionModel/vtkHyperOctreeAlgorithm.h
@@ -35,6 +35,7 @@
 #include "vtkAlgorithm.h"
 #include "vtkHyperOctree.h" // makes things a bit easier
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkDataSet;
 class vtkHyperOctree;
 
@@ -119,5 +120,6 @@ private:
   vtkHyperOctreeAlgorithm(const vtkHyperOctreeAlgorithm&) = delete;
   void operator=(const vtkHyperOctreeAlgorithm&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Examples/IO/Cxx/DumpXMLFile.cxx b/Examples/IO/Cxx/DumpXMLFile.cxx
index 51451a2676598489d4ffdc2e94515424d2e03f04..0718c28146f487cd32b445deaab508cf0a073d9b 100644
--- a/Examples/IO/Cxx/DumpXMLFile.cxx
+++ b/Examples/IO/Cxx/DumpXMLFile.cxx
@@ -3,7 +3,7 @@
 //  Usage: DumpXMLFile XMLFile1 XMLFile2 ...
 //         where
 //         XMLFile is a vtk XML file of type .vtu, .vtp, .vts, .vtr,
-//         .vti, .vto
+//         .vti
 //
 #include <vtkSmartPointer.h>
 #include <vtkXMLReader.h>
@@ -11,7 +11,6 @@
 #include <vtkXMLPolyDataReader.h>
 #include <vtkXMLStructuredGridReader.h>
 #include <vtkXMLRectilinearGridReader.h>
-#include <vtkXMLHyperOctreeReader.h>
 #include <vtkXMLCompositeDataReader.h>
 #include <vtkXMLStructuredGridReader.h>
 #include <vtkXMLImageDataReader.h>
@@ -19,7 +18,6 @@
 #include <vtkDataSet.h>
 #include <vtkUnstructuredGrid.h>
 #include <vtkRectilinearGrid.h>
-#include <vtkHyperOctree.h>
 #include <vtkImageData.h>
 #include <vtkPolyData.h>
 #include <vtkStructuredGrid.h>
@@ -76,10 +74,6 @@ int main (int argc, char *argv[])
     {
       dataSet = ReadAnXMLFile<vtkXMLImageDataReader> (argv[f]);
     }
-    else if (extension == ".vto")
-    {
-      dataSet = ReadAnXMLFile<vtkXMLHyperOctreeReader> (argv[f]);
-    }
     else if (extension == ".vtk")
     {
       dataSet = ReadAnXMLFile<vtkDataSetReader> (argv[f]);
diff --git a/Filters/HyperTree/CMakeLists.txt b/Filters/HyperTree/CMakeLists.txt
index 2cfdd715dfce27bc2613a454f644034253e034af..8c6c8d97664e181d11c17b6358bc9751749fe64f 100644
--- a/Filters/HyperTree/CMakeLists.txt
+++ b/Filters/HyperTree/CMakeLists.txt
@@ -1,5 +1,4 @@
 set(Module_SRCS
-  vtkClipHyperOctree.cxx
   vtkHyperTreeGridAxisClip.cxx
   vtkHyperTreeGridAxisCut.cxx
   vtkHyperTreeGridAxisReflection.cxx
@@ -10,15 +9,21 @@ set(Module_SRCS
   vtkHyperTreeGridPlaneCutter.cxx
   vtkHyperTreeGridThreshold.cxx
   vtkHyperTreeGridToUnstructuredGrid.cxx
-  vtkHyperOctreeClipCutPointsGrabber.cxx
-  vtkHyperOctreeContourFilter.cxx
-  vtkHyperOctreeCutter.cxx
-  vtkHyperOctreeDepth.cxx
-  vtkHyperOctreeDualGridContourFilter.cxx
-  vtkHyperOctreeLimiter.cxx
-  vtkHyperOctreeSampleFunction.cxx
-  vtkHyperOctreeSurfaceFilter.cxx
-  vtkHyperOctreeToUniformGridFilter.cxx
   )
 
+if (NOT VTK_LEGACY_REMOVE)
+  list(APPEND Module_SRCS
+    vtkClipHyperOctree.cxx
+    vtkHyperOctreeClipCutPointsGrabber.cxx
+    vtkHyperOctreeContourFilter.cxx
+    vtkHyperOctreeCutter.cxx
+    vtkHyperOctreeDepth.cxx
+    vtkHyperOctreeDualGridContourFilter.cxx
+    vtkHyperOctreeLimiter.cxx
+    vtkHyperOctreeSampleFunction.cxx
+    vtkHyperOctreeSurfaceFilter.cxx
+    vtkHyperOctreeToUniformGridFilter.cxx
+  )
+endif()
+
 vtk_module_library(vtkFiltersHyperTree ${Module_SRCS})
diff --git a/Filters/HyperTree/Testing/Cxx/CMakeLists.txt b/Filters/HyperTree/Testing/Cxx/CMakeLists.txt
index 97eab2a945e61d1384c61553790ef549db3b4661..d77c252176de335063f7dda4430b95ac954b78ec 100644
--- a/Filters/HyperTree/Testing/Cxx/CMakeLists.txt
+++ b/Filters/HyperTree/Testing/Cxx/CMakeLists.txt
@@ -1,10 +1,13 @@
-vtk_add_test_cxx(${vtk-module}CxxTests tests
-  TestClipHyperOctree.cxx
-  TestHyperOctreeContourFilter.cxx
-  TestHyperOctreeCutter.cxx
-  TestHyperOctreeDual.cxx
-  TestHyperOctreeSurfaceFilter.cxx
-  TestHyperOctreeToUniformGrid.cxx
+set(test_sources
+  # All things HyperOctree-related have been deprecated, so these now emit lots
+  # of warnings:
+  #TestClipHyperOctree.cxx
+  #TestHyperOctreeContourFilter.cxx
+  #TestHyperOctreeCutter.cxx
+  #TestHyperOctreeDual.cxx
+  #TestHyperOctreeSurfaceFilter.cxx
+  #TestHyperOctreeToUniformGrid.cxx
+
   TestHyperTreeGridBinary2D.cxx
   TestHyperTreeGridBinary2DAxisClipBox.cxx
   TestHyperTreeGridBinary2DAxisClipEllipse.cxx
@@ -69,4 +72,12 @@ vtk_add_test_cxx(${vtk-module}CxxTests tests
   TestHyperTreeGridTernarySphereMaterial.cxx
   TestHyperTreeGridTernarySphereMaterialReflections.cxx
   )
+
+if (NOT VTK_LEGACY_REMOVE)
+  list(APPEND test_sources
+  )
+endif()
+
+vtk_add_test_cxx(${vtk-module}CxxTests tests ${test_sources})
+
 vtk_test_cxx_executable(${vtk-module}CxxTests tests)
diff --git a/Filters/HyperTree/vtkClipHyperOctree.cxx b/Filters/HyperTree/vtkClipHyperOctree.cxx
index ac3e1a9a5ca4b20cf58f9158f9a80a2f6c860237..5a0209e41be2e4bee7992c013d899d148390402f 100644
--- a/Filters/HyperTree/vtkClipHyperOctree.cxx
+++ b/Filters/HyperTree/vtkClipHyperOctree.cxx
@@ -52,6 +52,8 @@ vtkCxxSetObjectMacro(vtkClipHyperOctree,ClipFunction,vtkImplicitFunction);
 // set to 0.0; and generate clip scalars turned off.
 vtkClipHyperOctree::vtkClipHyperOctree(vtkImplicitFunction *cf)
 {
+  VTK_LEGACY_BODY(vtkClipHyperOctree, "VTK 8.1");
+
   this->ClipFunction = cf;
   this->InsideOut = 0;
   this->Locator = nullptr;
diff --git a/Filters/HyperTree/vtkClipHyperOctree.h b/Filters/HyperTree/vtkClipHyperOctree.h
index 00a237e9371d6f73bfb18d95731773d66186d555..35a4c950af12a9fffe724cf391a9b18e731acedf 100644
--- a/Filters/HyperTree/vtkClipHyperOctree.h
+++ b/Filters/HyperTree/vtkClipHyperOctree.h
@@ -63,6 +63,7 @@
 #include "vtkFiltersHyperTreeModule.h" // For export macro
 #include "vtkUnstructuredGridAlgorithm.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkImplicitFunction;
 class vtkIncrementalPointLocator;
 class vtkHyperOctreeCursor;
@@ -231,5 +232,6 @@ private:
   vtkClipHyperOctree(const vtkClipHyperOctree&) = delete;
   void operator=(const vtkClipHyperOctree&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.cxx b/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.cxx
index 93fffb1378840fe41995d57fcf5de3a928f422ce..976f176eb9dc41ec5ff7766fb87b599850cda777 100644
--- a/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.cxx
@@ -34,6 +34,8 @@ public:
 // Default constructor.
 vtkHyperOctreeClipCutPointsGrabber::vtkHyperOctreeClipCutPointsGrabber()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeClipCutPointsGrabber, "VTK 8.1");
+
   this->Triangulator=vtkOrderedTriangulator::New();
   this->IdSet=new vtkHyperOctreeIdSet;
   this->Polygon=nullptr;
diff --git a/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.h b/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.h
index da2a489438b2161c6e8284a560f00e55722462b2..0ccc17db8d97f163f7435c292b0baf9025b4e370 100644
--- a/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.h
+++ b/Filters/HyperTree/vtkHyperOctreeClipCutPointsGrabber.h
@@ -28,11 +28,11 @@
 #include "vtkFiltersHyperTreeModule.h" // For export macro
 #include "vtkHyperOctreePointsGrabber.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkHyperOctreeIdSet; // Pimpl idiom
 class vtkPolygon;
 class vtkOrderedTriangulator;
 
-
 class VTKFILTERSHYPERTREE_EXPORT vtkHyperOctreeClipCutPointsGrabber : public vtkHyperOctreePointsGrabber
 {
 public:
@@ -107,5 +107,6 @@ private:
   vtkHyperOctreeClipCutPointsGrabber(const vtkHyperOctreeClipCutPointsGrabber&) = delete;
   void operator=(const vtkHyperOctreeClipCutPointsGrabber&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeContourFilter.cxx b/Filters/HyperTree/vtkHyperOctreeContourFilter.cxx
index 07a06597c3cfec6fac99bbeb81cd55fb5dc0dc87..946c64424866318fc3ea010faed0547ee747c310 100644
--- a/Filters/HyperTree/vtkHyperOctreeContourFilter.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeContourFilter.cxx
@@ -161,6 +161,8 @@ vtkStandardNewMacro(vtkHyperOctreeContourFilter);
 // set to 0.0; and generate cut scalars turned off.
 vtkHyperOctreeContourFilter::vtkHyperOctreeContourFilter()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeContourFilter, "VTK 8.1");
+
   this->ContourValues = vtkContourValues::New();
 
   this->Locator = nullptr;
diff --git a/Filters/HyperTree/vtkHyperOctreeContourFilter.h b/Filters/HyperTree/vtkHyperOctreeContourFilter.h
index 6338363c897701e5024bc49c7a02a5df69a9a7fa..83a6879a191867bdfa911e3e12a5a160d8e05f70 100644
--- a/Filters/HyperTree/vtkHyperOctreeContourFilter.h
+++ b/Filters/HyperTree/vtkHyperOctreeContourFilter.h
@@ -54,6 +54,7 @@
 #include "vtkContourValues.h" // Needed for inline methods
 #include "vtkCutter.h" // for VTK_SORT_BY_VALUE
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkIncrementalPointLocator;
 class vtkHyperOctree;
 class vtkOrderedTriangulator;
@@ -80,6 +81,7 @@ public:
 
   /**
    * Methods to set / get contour values.
+#if !defined(VTK_LEGACY_REMOVE)
    */
 
   /**
@@ -251,4 +253,6 @@ private:
   vtkHyperOctreeContourFilter(const vtkHyperOctreeContourFilter&) = delete;
   void operator=(const vtkHyperOctreeContourFilter&) = delete;
 };
+#endif // LEGACY remove
+
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeCutter.cxx b/Filters/HyperTree/vtkHyperOctreeCutter.cxx
index 22a2defb53fce0ef3b60273eb7db18a30b9a8d3e..ef4f2056d0cf71a8dafd1b4ed1524095c2b1c3a1 100644
--- a/Filters/HyperTree/vtkHyperOctreeCutter.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeCutter.cxx
@@ -52,6 +52,8 @@ vtkCxxSetObjectMacro(vtkHyperOctreeCutter,CutFunction,vtkImplicitFunction);
 // set to 0.0; and generate cut scalars turned off.
 vtkHyperOctreeCutter::vtkHyperOctreeCutter(vtkImplicitFunction *cf)
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeCutter, "VTK 8.1");
+
   this->ContourValues = vtkContourValues::New();
   this->SortBy = VTK_SORT_BY_VALUE;
 
diff --git a/Filters/HyperTree/vtkHyperOctreeCutter.h b/Filters/HyperTree/vtkHyperOctreeCutter.h
index 8401294a8e48d7ac7805aa9e8387a5f5e8218243..aafe30005a8783d132965710ce983ae41aee5d41 100644
--- a/Filters/HyperTree/vtkHyperOctreeCutter.h
+++ b/Filters/HyperTree/vtkHyperOctreeCutter.h
@@ -59,6 +59,7 @@
 // fix until this filter can be converted to geernate unstructured grids.
 //#define VTK_NUMBER_OF_CELL_TYPES 68
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkImplicitFunction;
 class vtkIncrementalPointLocator;
 class vtkHyperOctree;
@@ -280,5 +281,6 @@ private:
   vtkHyperOctreeCutter(const vtkHyperOctreeCutter&) = delete;
   void operator=(const vtkHyperOctreeCutter&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeDepth.cxx b/Filters/HyperTree/vtkHyperOctreeDepth.cxx
index 31b26bb7104fa50653e13a6f093539f8c30e17ed..825cf6bf7f7bf212c6f11f096d97ca2574333632 100644
--- a/Filters/HyperTree/vtkHyperOctreeDepth.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeDepth.cxx
@@ -29,6 +29,8 @@ vtkStandardNewMacro(vtkHyperOctreeDepth);
 //----------------------------------------------------------------------------
 vtkHyperOctreeDepth::vtkHyperOctreeDepth()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeDepth, "VTK 8.1");
+
   this->GeneratedDepths = nullptr;
 }
 
diff --git a/Filters/HyperTree/vtkHyperOctreeDepth.h b/Filters/HyperTree/vtkHyperOctreeDepth.h
index 076b4321c6f22138edaaacff01fc70a654a0a067..d7819a7af82a316413ffd1c5f19c39356ff37177 100644
--- a/Filters/HyperTree/vtkHyperOctreeDepth.h
+++ b/Filters/HyperTree/vtkHyperOctreeDepth.h
@@ -29,6 +29,7 @@
 #include "vtkFiltersHyperTreeModule.h" // For export macro
 #include "vtkDataSetAlgorithm.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkHyperOctree;
 class vtkHyperOctreeCursor;
 class vtkIntArray;
@@ -59,5 +60,6 @@ private:
   vtkHyperOctreeDepth(const vtkHyperOctreeDepth&) = delete;
   void operator=(const vtkHyperOctreeDepth&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.cxx b/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.cxx
index 3c5fb0fb34de3dcfc51291befd80c4e359a75521..2bab69f69630ddf3e6b1a74a2633dbfe172285de 100644
--- a/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.cxx
@@ -80,6 +80,8 @@ vtkStandardNewMacro(vtkHyperOctreeDualGridContourFilter);
 // set to 0.0; and generate cut scalars turned off.
 vtkHyperOctreeDualGridContourFilter::vtkHyperOctreeDualGridContourFilter()
 {
+  VTK_LEGACY_BODY(vtkHyperOctree, "VTK 8.1");
+
   this->ContourValues = vtkContourValues::New();
 
   this->Locator = nullptr;
diff --git a/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.h b/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.h
index 859a55fc6575d4a6d945c43edb4034fe7d80c920..837eee2eb0da008b966c62a4d6e5ebc5b0d6231e 100644
--- a/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.h
+++ b/Filters/HyperTree/vtkHyperOctreeDualGridContourFilter.h
@@ -43,6 +43,7 @@
 #include "vtkContourValues.h" // Needed for inline methods
 #include "vtkCutter.h" // for VTK_SORT_BY_VALUE
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkHyperOctree;
 class vtkTetra;
 class vtkHyperOctreeCursor;
@@ -216,4 +217,6 @@ private:
   vtkHyperOctreeDualGridContourFilter(const vtkHyperOctreeDualGridContourFilter&) = delete;
   void operator=(const vtkHyperOctreeDualGridContourFilter&) = delete;
 };
+#endif // LEGACY remove
+
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeLimiter.cxx b/Filters/HyperTree/vtkHyperOctreeLimiter.cxx
index 94986c7d19d8400dae4f1d69204315a43395e2fa..e799ac00beb6bd4b0dd85b31c6939bfdb84aaf90 100644
--- a/Filters/HyperTree/vtkHyperOctreeLimiter.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeLimiter.cxx
@@ -34,6 +34,8 @@ vtkStandardNewMacro(vtkHyperOctreeLimiter);
 //----------------------------------------------------------------------------
 vtkHyperOctreeLimiter::vtkHyperOctreeLimiter()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeLimiter, "VTK 8.1");
+
   this->MaximumLevel = 5;
   this->AccumScratch =  new double[1024];
 }
diff --git a/Filters/HyperTree/vtkHyperOctreeLimiter.h b/Filters/HyperTree/vtkHyperOctreeLimiter.h
index 94f96b852c99c2841181ca88437bb5aa00b3b63d..1b0a1f6eb162dcaa2528ec4a4f0a901df6695617 100644
--- a/Filters/HyperTree/vtkHyperOctreeLimiter.h
+++ b/Filters/HyperTree/vtkHyperOctreeLimiter.h
@@ -31,6 +31,7 @@
 #include "vtkFiltersHyperTreeModule.h" // For export macro
 #include "vtkDataSetAlgorithm.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkHyperOctree;
 class vtkHyperOctreeCursor;
 
@@ -79,5 +80,6 @@ private:
   vtkHyperOctreeLimiter(const vtkHyperOctreeLimiter&) = delete;
   void operator=(const vtkHyperOctreeLimiter&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeSampleFunction.cxx b/Filters/HyperTree/vtkHyperOctreeSampleFunction.cxx
index cd2e477e9d4dd95c715e20c701b91061cd34aa5e..ab47d0b5b9e79d6ddabba68f5165749ab3f10f35 100644
--- a/Filters/HyperTree/vtkHyperOctreeSampleFunction.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeSampleFunction.cxx
@@ -33,6 +33,8 @@ vtkCxxSetObjectMacro(vtkHyperOctreeSampleFunction,ImplicitFunction,
 //----------------------------------------------------------------------------
 vtkHyperOctreeSampleFunction::vtkHyperOctreeSampleFunction()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeSampleFunction, "VTK 8.1");
+
   this->SetNumberOfInputPorts(0);
   this->Dimension=3;
   int i=0;
diff --git a/Filters/HyperTree/vtkHyperOctreeSampleFunction.h b/Filters/HyperTree/vtkHyperOctreeSampleFunction.h
index 1a7bbe1ecaf1b169a4422375152bb0aa6200a18f..2e6038b8d757366c3839c64ceb9d3fc3d2b518bf 100644
--- a/Filters/HyperTree/vtkHyperOctreeSampleFunction.h
+++ b/Filters/HyperTree/vtkHyperOctreeSampleFunction.h
@@ -34,6 +34,7 @@
 
 class vtkImplicitFunction;
 
+#if !defined(VTK_LEGACY_REMOVE)
 class VTKFILTERSHYPERTREE_EXPORT vtkHyperOctreeSampleFunction : public vtkHyperOctreeAlgorithm
 {
 public:
@@ -239,5 +240,6 @@ private:
   vtkHyperOctreeSampleFunction(const vtkHyperOctreeSampleFunction&) = delete;
   void operator=(const vtkHyperOctreeSampleFunction&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.cxx b/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.cxx
index 72334ff4d7147f5fa66a46db1ac6ed2bbad9e23e..06ff9bea19c8abb1a671c63a84f028910240a158 100644
--- a/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.cxx
+++ b/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.cxx
@@ -34,6 +34,8 @@ vtkStandardNewMacro(vtkHyperOctreeToUniformGridFilter);
 //----------------------------------------------------------------------------
 vtkHyperOctreeToUniformGridFilter::vtkHyperOctreeToUniformGridFilter()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeToUniformGridFilter, "VTK 8.1");
+
   this->InputCD=nullptr;
   this->OutputCD=nullptr;
   this->Cursor=nullptr;
diff --git a/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.h b/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.h
index 32f818f2d173426687e044b11a9b9f062bf135f9..a3f283f2223af188db5a0fac24de56bd66ec9d09 100644
--- a/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.h
+++ b/Filters/HyperTree/vtkHyperOctreeToUniformGridFilter.h
@@ -32,6 +32,7 @@
 #include "vtkFiltersHyperTreeModule.h" // For export macro
 #include "vtkImageAlgorithm.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkHyperOctreeCursor;
 class vtkCellData;
 class vtkDataSetAttributes;
@@ -69,5 +70,6 @@ private:
   vtkHyperOctreeToUniformGridFilter(const vtkHyperOctreeToUniformGridFilter&) = delete;
   void operator=(const vtkHyperOctreeToUniformGridFilter&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/Filters/Sources/CMakeLists.txt b/Filters/Sources/CMakeLists.txt
index 8825593d2a84dd4712026673601b76e3e120e2c9..f76d7eba54f26667d176a27b021730f1653a9fb1 100644
--- a/Filters/Sources/CMakeLists.txt
+++ b/Filters/Sources/CMakeLists.txt
@@ -11,7 +11,6 @@ set(Module_SRCS
   vtkEllipticalButtonSource.cxx
   vtkFrustumSource.cxx
   vtkGlyphSource2D.cxx
-  vtkHyperOctreeFractalSource.cxx
   vtkHyperTreeGridSource.cxx
   vtkLineSource.cxx
   vtkOutlineCornerFilter.cxx
@@ -38,6 +37,12 @@ set(Module_SRCS
   vtkDiagonalMatrixSource.cxx
   )
 
+if (NOT VTK_LEGACY_REMOVE)
+  list(APPEND Module_SRCS
+    vtkHyperOctreeFractalSource.cxx
+  )
+endif()
+
 set_source_files_properties(
   vtkButtonSource
   ABSTRACT
diff --git a/Filters/Sources/vtkHyperOctreeFractalSource.cxx b/Filters/Sources/vtkHyperOctreeFractalSource.cxx
index e0aee2a47c7abb9b3b89b14d46b270688c0f07c6..ad9bbc26d5bd3a529aa28f8eeb85cc6fcf67f60a 100644
--- a/Filters/Sources/vtkHyperOctreeFractalSource.cxx
+++ b/Filters/Sources/vtkHyperOctreeFractalSource.cxx
@@ -32,6 +32,8 @@ vtkStandardNewMacro(vtkHyperOctreeFractalSource);
 //----------------------------------------------------------------------------
 vtkHyperOctreeFractalSource::vtkHyperOctreeFractalSource()
 {
+  VTK_LEGACY_BODY(vtkHyperOctreeFractalSource, "VTK 8.1");
+
   this->SetNumberOfInputPorts(0);
 
   this->SizeCX[0] = 2.5;
diff --git a/Filters/Sources/vtkHyperOctreeFractalSource.h b/Filters/Sources/vtkHyperOctreeFractalSource.h
index 660fc4543d8e6ce4300e31f2c906be1fb7f3fcec..611cf5e59f57fade3c86baf4417e35399aa9014e 100644
--- a/Filters/Sources/vtkHyperOctreeFractalSource.h
+++ b/Filters/Sources/vtkHyperOctreeFractalSource.h
@@ -30,6 +30,7 @@
 
 class vtkImplicitFunction;
 
+#if !defined(VTK_LEGACY_REMOVE)
 class VTKFILTERSSOURCES_EXPORT vtkHyperOctreeFractalSource : public vtkHyperOctreeAlgorithm
 {
 public:
@@ -165,5 +166,6 @@ private:
   vtkHyperOctreeFractalSource(const vtkHyperOctreeFractalSource&) = delete;
   void operator=(const vtkHyperOctreeFractalSource&) = delete;
 };
+#endif //VTK_LEGACY_REMOVE
 
 #endif
diff --git a/IO/XML/CMakeLists.txt b/IO/XML/CMakeLists.txt
index 69cddb7b9788e8a7b427cd7ef45fdd9ea95c41dd..5162985a2c93066be2a29cda4ff47585ddf15841 100644
--- a/IO/XML/CMakeLists.txt
+++ b/IO/XML/CMakeLists.txt
@@ -11,8 +11,6 @@ set(Module_SRCS
   vtkXMLHierarchicalBoxDataReader.cxx
   vtkXMLHierarchicalBoxDataWriter.cxx
   vtkXMLHierarchicalDataReader.cxx
-  vtkXMLHyperOctreeReader.cxx
-  vtkXMLHyperOctreeWriter.cxx
   vtkXMLImageDataReader.cxx
   vtkXMLImageDataWriter.cxx
   vtkXMLMultiBlockDataReader.cxx
@@ -49,6 +47,13 @@ set(Module_SRCS
   vtkXMLWriter.cxx
   )
 
+if (NOT VTK_LEGACY_REMOVE)
+  list(APPEND Module_SRCS
+    vtkXMLHyperOctreeReader.cxx
+    vtkXMLHyperOctreeWriter.cxx
+  )
+endif()
+
 set_source_files_properties(
   vtkXMLCompositeDataReader
   vtkXMLCompositeDataWriter
diff --git a/IO/XML/Testing/Cxx/CMakeLists.txt b/IO/XML/Testing/Cxx/CMakeLists.txt
index 4f688e8c2c4295058f34e11c234615b85633875c..ea77d1a016fadb39ecdf688c585af23d7ea2137c 100644
--- a/IO/XML/Testing/Cxx/CMakeLists.txt
+++ b/IO/XML/Testing/Cxx/CMakeLists.txt
@@ -2,7 +2,7 @@ set(TestXML_ARGS "DATA{${VTK_TEST_INPUT_DIR}/sample.xml}")
 vtk_add_test_cxx(${vtk-module}CxxTests tests
   TestAMRXMLIO.cxx,NO_VALID
   TestDataObjectXMLIO.cxx,NO_VALID
-  TestHyperOctreeIO.cxx
+  #TestHyperOctreeIO.cxx # HyperOctree is deprecated
   TestReadDuplicateDataArrayNames.cxx,NO_DATA,NO_VALID
   TestXML.cxx,NO_DATA,NO_VALID,NO_OUTPUT
   TestXMLGhostCellsImport.cxx
diff --git a/IO/XML/vtkXMLDataObjectWriter.cxx b/IO/XML/vtkXMLDataObjectWriter.cxx
index 4954eb73c5f2569cf2182b8864b34b9e7fe3b50d..998631769a4768c9cca2b24e0cb4b805a1c91eb4 100644
--- a/IO/XML/vtkXMLDataObjectWriter.cxx
+++ b/IO/XML/vtkXMLDataObjectWriter.cxx
@@ -17,7 +17,9 @@
 #include "vtkAlgorithmOutput.h"
 #include "vtkCallbackCommand.h"
 #include "vtkDataSet.h"
+#if !defined(VTK_LEGACY_REMOVE)
 #include "vtkHyperOctree.h"
+#endif // LEGACY remove
 #include "vtkImageData.h"
 #include "vtkInformation.h"
 #include "vtkObjectFactory.h"
@@ -26,7 +28,9 @@
 #include "vtkSmartPointer.h"
 #include "vtkStructuredGrid.h"
 #include "vtkUnstructuredGrid.h"
+#if !defined(VTK_LEGACY_REMOVE)
 #include "vtkXMLHyperOctreeWriter.h"
+#endif // LEGACY remove
 #include "vtkXMLImageDataWriter.h"
 #include "vtkXMLPolyDataWriter.h"
 #include "vtkXMLRectilinearGridWriter.h"
@@ -82,7 +86,12 @@ vtkXMLWriter* vtkXMLDataObjectWriter::NewWriter(int dataset_type)
     case VTK_POLY_DATA:
       return vtkXMLPolyDataWriter::New();
     case VTK_HYPER_OCTREE:
+#if !defined(VTK_LEGACY_REMOVE)
       return vtkXMLHyperOctreeWriter::New();
+#else // LEGACY remove
+      vtkGenericWarningMacro("vtkHyperOctree has been deprecated.");
+      return nullptr;
+#endif // LEGACY remove
     case VTK_TABLE:
       return vtkXMLTableWriter::New();
   }
diff --git a/IO/XML/vtkXMLGenericDataObjectReader.cxx b/IO/XML/vtkXMLGenericDataObjectReader.cxx
index 0eb7ed1e73ce68c9f35d0dc96b67833cec8713e8..5fe48dd3063d0b9fca86c67aad95aaad78068bbe 100644
--- a/IO/XML/vtkXMLGenericDataObjectReader.cxx
+++ b/IO/XML/vtkXMLGenericDataObjectReader.cxx
@@ -15,7 +15,9 @@
 #include "vtkXMLGenericDataObjectReader.h"
 
 #include "vtkHierarchicalBoxDataSet.h"
+#if !defined(VTK_LEGACY_REMOVE)
 #include "vtkHyperOctree.h"
+#endif // LEGACY remove
 #include "vtkImageData.h"
 #include "vtkInformation.h"
 #include "vtkInformationVector.h"
@@ -29,7 +31,9 @@
 #include "vtkStructuredGrid.h"
 #include "vtkUnstructuredGrid.h"
 #include "vtkXMLFileReadTester.h"
+#if !defined(VTK_LEGACY_REMOVE)
 #include "vtkXMLHyperOctreeReader.h"
+#endif // LEGACY remove
 #include "vtkXMLImageDataReader.h"
 #include "vtkXMLMultiBlockDataReader.h"
 #include "vtkXMLPImageDataReader.h"
@@ -193,9 +197,14 @@ int vtkXMLGenericDataObjectReader::RequestDataObject(
       output = vtkNonOverlappingAMR::New();
       break;
     case VTK_HYPER_OCTREE:
+#if !defined(VTK_LEGACY_REMOVE)
       this->Reader=vtkXMLHyperOctreeReader::New();
       output=vtkHyperOctree::New();
       break;
+#else // LEGACY remove
+      vtkErrorMacro("vtkHyperOctree has been deprecated.");
+      return 0;
+#endif // LEGACY remove
     case VTK_IMAGE_DATA:
       if(parallel)
       {
@@ -374,11 +383,14 @@ vtkXMLGenericDataObjectReader::GetHierarchicalBoxDataSetOutput()
   return vtkHierarchicalBoxDataSet::SafeDownCast(this->GetOutput());
 }
 
+
+#if !defined(VTK_LEGACY_REMOVE)
 // ---------------------------------------------------------------------------
 vtkHyperOctree *vtkXMLGenericDataObjectReader::GetHyperOctreeOutput()
 {
   return vtkHyperOctree::SafeDownCast(this->GetOutput());
 }
+#endif // LEGACY remove
 
 // ---------------------------------------------------------------------------
 vtkImageData *vtkXMLGenericDataObjectReader::GetImageDataOutput()
diff --git a/IO/XML/vtkXMLGenericDataObjectReader.h b/IO/XML/vtkXMLGenericDataObjectReader.h
index c9957373b018a880a85ade235305eb708f6eb6b3..7f25534dd8bdda9628810234fc830f44d9fbd642 100644
--- a/IO/XML/vtkXMLGenericDataObjectReader.h
+++ b/IO/XML/vtkXMLGenericDataObjectReader.h
@@ -62,7 +62,9 @@ public:
    * getting the output.)
    */
   vtkHierarchicalBoxDataSet *GetHierarchicalBoxDataSetOutput();
+#if !defined(VTK_LEGACY_REMOVE)
   vtkHyperOctree *GetHyperOctreeOutput();
+#endif // LEGACY remove
   vtkImageData *GetImageDataOutput();
   vtkMultiBlockDataSet *GetMultiBlockDataSetOutput();
   vtkPolyData *GetPolyDataOutput();
diff --git a/IO/XML/vtkXMLHyperOctreeReader.cxx b/IO/XML/vtkXMLHyperOctreeReader.cxx
index 9db4a1e791f84d66cc1d2ea48b463a467cb23eb4..925b47de76953095e000bbb599695c66f430fdaf 100644
--- a/IO/XML/vtkXMLHyperOctreeReader.cxx
+++ b/IO/XML/vtkXMLHyperOctreeReader.cxx
@@ -35,6 +35,7 @@ vtkStandardNewMacro(vtkXMLHyperOctreeReader);
 //----------------------------------------------------------------------------
 vtkXMLHyperOctreeReader::vtkXMLHyperOctreeReader()
 {
+  VTK_LEGACY_BODY(vtkXMLHyperOctreeReader, "VTK 8.1");
 }
 
 //----------------------------------------------------------------------------
diff --git a/IO/XML/vtkXMLHyperOctreeReader.h b/IO/XML/vtkXMLHyperOctreeReader.h
index c3b3bd4fdbc4c9b902058a7eb7f673b51ca175a3..9105a1974803f833d8d32f723974a29e2e133b88 100644
--- a/IO/XML/vtkXMLHyperOctreeReader.h
+++ b/IO/XML/vtkXMLHyperOctreeReader.h
@@ -32,6 +32,7 @@
 #include "vtkIOXMLModule.h" // For export macro
 #include "vtkXMLDataReader.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkHyperOctree;
 class vtkHyperOctreeCursor;
 class vtkIntArray;
@@ -92,5 +93,6 @@ private:
   vtkXMLHyperOctreeReader(const vtkXMLHyperOctreeReader&) = delete;
   void operator=(const vtkXMLHyperOctreeReader&) = delete;
 };
+#endif // LEGACY remove
 
 #endif
diff --git a/IO/XML/vtkXMLHyperOctreeWriter.cxx b/IO/XML/vtkXMLHyperOctreeWriter.cxx
index b7a2d71bda997388a27a6fa1c97ecb61f3924af8..76c972d6bcf866fd1248f764c306bfd929c08847 100644
--- a/IO/XML/vtkXMLHyperOctreeWriter.cxx
+++ b/IO/XML/vtkXMLHyperOctreeWriter.cxx
@@ -38,6 +38,8 @@ vtkStandardNewMacro(vtkXMLHyperOctreeWriter);
 //----------------------------------------------------------------------------
 vtkXMLHyperOctreeWriter::vtkXMLHyperOctreeWriter()
 {
+  VTK_LEGACY_BODY(vtkXMLHyperOctreeWriter, "VTK 8.1");
+
   this->TopologyArray = nullptr;
   this->TopologyOM = new OffsetsManagerGroup;
   this->PointDataOM = new OffsetsManagerGroup;
diff --git a/IO/XML/vtkXMLHyperOctreeWriter.h b/IO/XML/vtkXMLHyperOctreeWriter.h
index b54f784fc15342da02d6637383523ccf85aa9d9c..472c1173e8d237a019519d702e2daa306433776d 100644
--- a/IO/XML/vtkXMLHyperOctreeWriter.h
+++ b/IO/XML/vtkXMLHyperOctreeWriter.h
@@ -32,6 +32,7 @@
 #include "vtkIOXMLModule.h" // For export macro
 #include "vtkXMLWriter.h"
 
+#if !defined(VTK_LEGACY_REMOVE)
 class vtkHyperOctree;
 class vtkHyperOctreeCursor;
 class vtkIntArray;
@@ -94,5 +95,6 @@ private:
   vtkXMLHyperOctreeWriter(const vtkXMLHyperOctreeWriter&) = delete;
   void operator=(const vtkXMLHyperOctreeWriter&) = delete;
 };
+#endif // LEGACY remove
 
 #endif