diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceImpl.java
index ca564c0..784240d 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/PartServiceImpl.java
@@ -552,15 +552,13 @@
 					addToLastContainer(category, providedPart);
 				} else {
 					Object element = elements.get(0);
-					if (element instanceof MPartStack) {
-						MPartStack stack = (MPartStack) element;
-						if (providedPart.getCurSharedRef() instanceof MPlaceholder) {
-							stack.getChildren().add(providedPart.getCurSharedRef());
+					if (element instanceof MElementContainer<?>) {
+						MPlaceholder placeholder = providedPart.getCurSharedRef();
+						if (placeholder == null) {
+							((MElementContainer) element).getChildren().add(providedPart);
 						} else {
-							stack.getChildren().add(providedPart);
+							((MElementContainer) element).getChildren().add(placeholder);
 						}
-					} else if (element instanceof MElementContainer<?>) {
-						((MElementContainer<MPart>) element).getChildren().add(providedPart);
 					} else {
 						addToLastContainer(category, providedPart);
 					}
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
index 54e298f..79e7582 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
@@ -2251,6 +2251,48 @@
 		assertEquals(placeholder, perspective.getChildren().get(1));
 	}
 
+	public void testShowPart_Bug321757() {
+		MApplication application = ApplicationFactoryImpl.eINSTANCE
+				.createApplication();
+
+		MPartDescriptor partDescriptor = org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicFactoryImpl.eINSTANCE
+				.createPartDescriptor();
+		partDescriptor.setCategory("containerTag");
+		partDescriptor.setElementId("partId");
+		partDescriptor.setAllowMultiple(true);
+		application.getDescriptors().add(partDescriptor);
+
+		MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
+		application.getChildren().add(window);
+		application.setSelectedElement(window);
+
+		MPerspectiveStack perspectiveStack = AdvancedFactoryImpl.eINSTANCE
+				.createPerspectiveStack();
+		window.getChildren().add(perspectiveStack);
+		window.setSelectedElement(perspectiveStack);
+
+		MPerspective perspective = AdvancedFactoryImpl.eINSTANCE
+				.createPerspective();
+		perspective.getTags().add("containerTag");
+		perspectiveStack.getChildren().add(perspective);
+		perspectiveStack.setSelectedElement(perspective);
+
+		initialize(applicationContext, application);
+
+		getEngine().createGui(window);
+
+		EPartService partService = window.getContext().get(EPartService.class);
+
+		MPlaceholder placeholder = partService.createSharedPart("partId",
+				window, true);
+		MPart sharedPart = (MPart) placeholder.getRef();
+		sharedPart.setCurSharedRef(placeholder);
+		partService.showPart(sharedPart, PartState.ACTIVATE);
+
+		assertEquals(1, perspective.getChildren().size());
+		assertEquals(placeholder, perspective.getChildren().get(0));
+	}
+
 	public void testHidePart_PartInAnotherWindow() {
 		MApplication application = createApplication(
 				new String[] { "partInWindow1" },
