@Override
        public boolean visit(final IComponent component) {
          if (progress != null && progress.isCanceled()) return false;

          // Clear previous error (if any)
          component.putClientProperty(CLIENT_PROP_ERROR_ARRAY, null);

          if (!(component instanceof IContainer container)) {
            return true;
          }

          if (container instanceof IRootContainer rootContainer) {
            if (rootContainer.getComponentCount() > 1) {
              // TODO[vova] implement
              putError(component, new ErrorInfo(
                component, null, UIDesignerBundle.message("error.multiple.toplevel.components"),
                HighlightDisplayLevel.ERROR,
                QuickFix.EMPTY_ARRAY
              ));
            }
          }
          else if (container.isXY() && container.getComponentCount() > 0) {
            // TODO[vova] implement
            putError(component, new ErrorInfo(
                       component, null, UIDesignerBundle.message("error.panel.not.laid.out"),
                       HighlightDisplayLevel.ERROR,
                       QuickFix.EMPTY_ARRAY
                     )
            );
          }
          return true;
        }
@Override
        public boolean visit(final IComponent component)