/**
  * Get all the hidden diagram element in the hierarchy of a given diagram element.
  *
  * @param diagramElement Diagram element
  * @return List of all the hidden parent container element
  */
 private List<DDiagramElement> getHiddenParentContainerViews(DDiagramElement diagramElement) {
   final List<DDiagramElement> containerViews = Lists.newArrayList();
   EObject containerView = diagramElement.eContainer();
   while (!(containerView instanceof DDiagram) && containerView instanceof DDiagramElement) {
     final DDiagramElementQuery query = new DDiagramElementQuery((DDiagramElement) containerView);
     if (query.isHidden()) {
       containerViews.add((DDiagramElement) containerView);
     }
     containerView = containerView.eContainer();
   }
   return containerViews;
 }
 /**
  * Get all the hidden existing diagram elements related to a semantic element.
  *
  * @param semanticElement Semantic element
  * @param containerView Container view
  * @return List of all existing diagram elements for the given semantic element which are
  *     currently hidden in the diagram
  */
 private List<DDiagramElement> getHiddenExistingDiagramElements(
     EObject semanticElement, DSemanticDecorator containerView) {
   final List<DDiagramElement> existingDiagramElements = Lists.newArrayList();
   if (containerView instanceof DSemanticDiagram) {
     for (final DDiagramElement element :
         ((DSemanticDiagram) containerView).getDiagramElements()) {
       if (semanticElement.equals(element.getTarget())) {
         final DDiagramElementQuery query = new DDiagramElementQuery(element);
         if (query.isHidden()) {
           existingDiagramElements.add(element);
         }
         // Get the hidden parent container of the element to reveal,
         // in order to reveal all the
         // hierarchy
         existingDiagramElements.addAll(getHiddenParentContainerViews(element));
       }
     }
   }
   return existingDiagramElements;
 }