@Override
  public void hideLocalPlaceholders(MWindow window, MPerspective perspective) {
    List<MPlaceholder> globals =
        findElements(window, null, MPlaceholder.class, null, OUTSIDE_PERSPECTIVE | IN_SHARED_AREA);

    // Iterate across the perspective(s) removing any 'local' placeholders
    List<MPerspective> persps = new ArrayList<>();
    if (perspective != null) {
      persps.add(perspective);
    } else {
      persps = findElements(window, null, MPerspective.class, null);
    }

    for (MPerspective persp : persps) {
      List<MPlaceholder> locals =
          findElements(persp, null, MPlaceholder.class, null, IN_ANY_PERSPECTIVE);
      for (MPlaceholder local : locals) {
        for (MPlaceholder global : globals) {
          if (global.getRef() == local.getRef()) {
            local.setToBeRendered(false);
            MElementContainer<MUIElement> localParent = local.getParent();
            setStackVisibility(localParent);
          }
        }
      }
    }
  }