diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java
index e68746f..f906062 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java
@@ -86,6 +86,7 @@
 		suite.addTest(new AttachedJavadocTests("testBug334652_3"));
 		suite.addTest(new AttachedJavadocTests("testBug334652_4"));
 		suite.addTest(new AttachedJavadocTests("testBug354766"));
+		suite.addTest(new AttachedJavadocTests("testBug354766_2"));
 		return suite;
 	}
 
@@ -1004,4 +1005,43 @@
 			this.project.setRawClasspath(entries, null);
 		}
 	}
+	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=354766
+	public void testBug354766_2() throws CoreException, IOException {
+		IClasspathEntry[] entries = this.project.getRawClasspath();
+
+		try {
+			IClasspathAttribute attribute =
+					JavaCore.newClasspathAttribute(
+							IClasspathAttribute.JAVADOC_LOCATION_ATTRIBUTE_NAME,
+							"jar:platform:/resource/AttachedJavadocProject/bug354766_doc.zip!/");
+					IClasspathEntry newEntry = JavaCore.newLibraryEntry(new Path("/AttachedJavadocProject/bug354766.jar"), null, null, null, new IClasspathAttribute[] { attribute}, false);
+			this.project.setRawClasspath(new IClasspathEntry[]{newEntry}, null);
+			this.project.getResolvedClasspath(false);
+
+			IPackageFragmentRoot jarRoot = this.project.getPackageFragmentRoot(getFile("/AttachedJavadocProject/bug354766.jar"));
+			final IType type = jarRoot.getPackageFragment("com.test").getClassFile("PublicAbstractClass$InnerFinalException.class").getType();
+			IMethod method = type.getMethod("InnerFinalException", new String[] { "Lcom.test.PublicAbstractClass;"});
+			assertNotNull(method);
+			assertTrue("Does not exist", method.exists());
+
+			String javadoc = method.getAttachedJavadoc(null);
+			assertNotNull(javadoc);
+			assertEquals(
+					"Wrong contents",
+					"<H3>\r\n" + 
+					"PublicAbstractClass.InnerFinalException</H3>\r\n" + 
+					"<PRE>\r\n" + 
+					"public <B>PublicAbstractClass.InnerFinalException</B>()</PRE>\r\n" + 
+					"<DL>\r\n" + 
+					"<DD>javadoc for InnerFinalException()\r\n" + 
+					"<P>\r\n" + 
+					"</DL>\r\n" + 
+					"\r\n" + 
+					"<!-- ============ METHOD DETAIL ========== -->\r\n" + 
+					"\r\n",
+					javadoc);
+		} finally {
+			this.project.setRawClasspath(entries, null);
+		}
+	}
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
index 5f0c5bf..fcbe28f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Terry Parker <tparker@google.com> - DeltaProcessor misses state changes in archive files, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=357425,
+ *     									   Fup of 357425: ensure all reported regressions are witnessed by tests, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=361922
  *******************************************************************************/
 package org.eclipse.jdt.core.tests.model;
 
@@ -4211,12 +4213,14 @@
 public void testTransitionFromInvalidToValidJar() throws CoreException, IOException {
 	String transitioningJarName = "transitioningJar.jar";
 	String transitioningJar = getExternalPath() + transitioningJarName;
-	String nonExistingJar = getExternalPath() + "nonExisting.jar";
+	String invalidJar = getExternalPath() + "invalidJar.jar";
 	IClasspathEntry transitioningEntry = JavaCore.newLibraryEntry(new Path(transitioningJar), null, null);
-	IClasspathEntry nonExistingEntry = JavaCore.newLibraryEntry(new Path(nonExistingJar), null, null);
+	IClasspathEntry nonExistingEntry = JavaCore.newLibraryEntry(new Path(invalidJar), null, null);
 
 	try {
-		IJavaProject proj = createJavaProject("P", new String[] {}, new String[] {transitioningJar, nonExistingJar}, "bin");
+		Util.createFile(transitioningJar, "");
+		Util.createFile(invalidJar, "");
+		IJavaProject proj = createJavaProject("P", new String[] {}, new String[] {transitioningJar, invalidJar}, "bin");
 		
 		IJavaModelStatus status1 = ClasspathEntry.validateClasspathEntry(proj, transitioningEntry, false, false);
 		IJavaModelStatus status2 = ClasspathEntry.validateClasspathEntry(proj, nonExistingEntry, false, false);
