Bug 322356 EPS's isPartVisible(MPart) method does not consider placeholders
SSIA
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceImpl.java
if (parentPart == null) {
			
			return;
		}
		IEclipseContext parentContext = parentPart.getContext();
		IEclipseContext oldContext = getSubContext(oldSelectedElement);
		Object child = parentContext.get(IContextConstants.ACTIVE_CHILD);
		if (child == null || oldContext == null || child == oldContext) {
			parentContext.set(IContextConstants.ACTIVE_CHILD,
					part == null ? null : part.getContext());
		}
	}
	public MPart findPart(String id) {
		MApplicationElement element = modelService.find(id, rootContainer);
		if (element instanceof MPlaceholder) {
			((MPlaceholder) element).getRef().setCurSharedRef((MPlaceholder) element);
			element = ((MPlaceholder) element).getRef();
		}
		return element instanceof MPart ? (MPart) element : null;
	}
	public Collection<MPart> getParts() {
		return modelService.findElements(rootContainer, null, MPart.class, null);
	}
	public boolean isPartVisible(MPart part) {
		if (isInContainer(part)) {
			MElementContainer<?> parent = part.getParent();
			if (parent instanceof MPartStack) {
				return parent.getSelectedElement() == part;
			}
			return part.isVisible();