docs: protected void prepareHelperElements(
          CmsContainerElementData elementData,
          CmsDNDHandler handler,
          I_CmsDraggable draggable) {
  
          if (elementData == null) {
              CmsDebugLog.getInstance().printLine("elementData == null!");
              handler.cancel();
              return;
          }
          if (!handler.isDragging()) {
              return;
          }
          if (elementData.isGroup()) {
              m_copyGroupId = m_draggableId;
          } else {
              m_copyGroupId = null;
          }
  
          if ((elementData.getDndId() != null) && (m_controller.getCachedElement(elementData.getDndId()) != null)) {
              m_draggableId = elementData.getDndId();
              elementData = m_controller.getCachedElement(m_draggableId);
          } else {
              m_draggableId = elementData.getClientId();
          }
          if (m_controller.isGroupcontainerEditing()) {
              CmsGroupContainerElementPanel groupContainer = m_controller.getGroupcontainer();
              if ((groupContainer != m_initialDropTarget)
                  && !(elementData.isGroupContainer() || elementData.isInheritContainer())
                  && (elementData.getContents().get(groupContainer.getContainerId()) != null)) {
                  Element placeholder = null;
                  Set<String> cssResources = elementData.getCssResources(groupContainer.getContainerId());
                  if ((cssResources != null) && !cssResources.isEmpty()) {
                      // the element requires certain CSS resources, check if present and include if necessary
                      for (String cssResourceLink : cssResources) {
                          CmsDomUtil.ensureStyleSheetIncluded(cssResourceLink);
                      }
                  }
                  try {
                      String htmlContent = elementData.getContents().get(groupContainer.getContainerId());
                      placeholder = CmsDomUtil.createElement(htmlContent);
                      // ensure any embedded flash players are set opaque so UI elements may be placed above them
                      CmsDomUtil.fixFlashZindex(placeholder);
                      placeholder.addClassName(I_CmsLayoutBundle.INSTANCE.dragdropCss().dragPlaceholder());
                  } catch (Exception e) {
                      CmsDebugLog.getInstance().printLine(e.getMessage());
                  }
  
                  if (placeholder != null) {
                      prepareDragInfo(placeholder, groupContainer, handler);
                      groupContainer.highlightContainer();
                  }
              }
              return;
          }
          if (!m_controller.isEditingDisabled()) {
              for (CmsContainerPageContainer container : m_controller.getContainerTargets().values()) {
                  if (draggable.getElement().isOrHasChild(container.getElement())) {
                      // skip containers that are children of the draggable element
                      continue;
                  }
                  if ((container != m_initialDropTarget)
                      && !container.isDetailView()
                      && (m_controller.getData().isModelGroup() || !container.hasModelGroupParent())
                      && (elementData.getContents().get(container.getContainerId()) != null)) {
  
                      Element placeholder = null;
                      if (elementData.isGroupContainer() || elementData.isInheritContainer()) {
                          placeholder = DOM.createDiv();
                          String content = "";
                          for (String groupId : elementData.getSubItems()) {
                              CmsContainerElementData subData = m_controller.getCachedElement(groupId);
                              if (subData != null) {
                                  if (subData.isShowInContext(
                                      CmsContainerpageController.get().getData().getTemplateContextInfo().getCurrentContext())) {
                                      if ((subData.getContents().get(container.getContainerId()) != null)) {
                                          content += subData.getContents().get(container.getContainerId());
                                      }
                                  } else {
                                      content += "<div class='"
                                          + CmsTemplateContextInfo.DUMMY_ELEMENT_MARKER
                                          + "' style='display: none !important;'></div>";
                                  }
                              }
                          }
                          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(content)) {
                              placeholder.setInnerHTML(content);
                              // ensure any embedded flash players are set opaque so UI elements may be placed above them
                              CmsDomUtil.fixFlashZindex(placeholder);
                          } else {
                              placeholder.addClassName(
                                  I_CmsLayoutBundle.INSTANCE.containerpageCss().emptyGroupContainer());
                          }
                      } else {
                          Set<String> cssResources = elementData.getCssResources(container.getContainerId());
                          if ((cssResources != null) && !cssResources.isEmpty()) {
                              // the element requires certain CSS resources, check if present and include if necessary
                              for (String cssResourceLink : cssResources) {
                                  CmsDomUtil.ensureStyleSheetIncluded(cssResourceLink);
                              }
                          }
                          try {
                              String htmlContent = elementData.getContents().get(container.getContainerId());
                              placeholder = CmsDomUtil.createElement(htmlContent);
                              // ensure any embedded flash players are set opaque so UI elements may be placed above them
                              CmsDomUtil.fixFlashZindex(placeholder);
                              placeholder.addClassName(I_CmsLayoutBundle.INSTANCE.dragdropCss().dragPlaceholder());
                          } catch (Exception e) {
                              CmsDebugLog.getInstance().printLine(e.getMessage());
                          }
                      }
                      if (placeholder != null) {
                          prepareDragInfo(placeholder, container, handler);
                      }
                  }
              }
              initNestedContainers();
              // add highlighting after all drag targets have been initialized
              updateHighlighting(true);
          }
      }