private boolean isOldBoundsRecoverable() {
   if (oldIdToBounds == null || oldIdToBounds.size() == 0) return false;
   // Make sure all nodes have been registered
   if (componentsInHiearchy == null || componentsInHiearchy.size() == 0) return false;
   for (Renderable r : componentsInHiearchy) {
     if (!oldIdToBounds.containsKey(r.getID())) return false;
   }
   // Check if a complex component has the same size as its container.
   // This may occur when a hidecomponent complex forms a complex with
   // another Node.
   for (Renderable r : componentsInHiearchy) {
     if (!(r instanceof RenderableComplex)) continue;
     RenderableComplex complex = (RenderableComplex) r;
     Rectangle complexBounds = oldIdToBounds.get(complex.getID());
     List<Renderable> list = RenderUtility.getComponentsInHierarchy(complex);
     for (Renderable tmp : list) {
       Rectangle tmpBounds = oldIdToBounds.get(tmp.getID());
       if (tmpBounds.width == complexBounds.width && tmpBounds.height == complexBounds.height)
         return false;
     }
   }
   return true;
 }