diff --git a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceElementParserTest.java b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceElementParserTest.java
index 9080a59..feafab8 100644
--- a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceElementParserTest.java
+++ b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceElementParserTest.java
@@ -172,8 +172,6 @@
 		buffer.append("abstract ");
 	if ((modifiers & ClassFileConstants.AccNative) != 0)
 		buffer.append("native ");
-	if ((modifiers & ClassFileConstants.AccSynchronized) != 0)
-		buffer.append("synchronized ");
 	return buffer.toString();
 }
 public void enterType(TypeInfo typeInfo) {
diff --git a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceField.java b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceField.java
index 5f89ba7..e14ed1e 100644
--- a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceField.java
+++ b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceField.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -58,8 +58,6 @@
 		buffer.append("abstract ");
 	if ((this.modifiers & ClassFileConstants.AccNative) != 0)
 		buffer.append("native ");
-	if ((this.modifiers & ClassFileConstants.AccSynchronized) != 0)
-		buffer.append("synchronized ");
 	return buffer.toString();
 }
 public String getActualName() {
diff --git a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceMethod.java b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceMethod.java
index 273624a..a910ebd 100644
--- a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceMethod.java
+++ b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceMethod.java
@@ -71,8 +71,6 @@
 		buffer.append("abstract ");
 	if ((this.modifiers & ClassFileConstants.AccNative) != 0)
 		buffer.append("native ");
-	if ((this.modifiers & ClassFileConstants.AccSynchronized) != 0)
-		buffer.append("synchronized ");
 	if (buffer.toString().trim().equals(""))
 		return null;
 	return buffer.toString().trim();
diff --git a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceType.java b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceType.java
index 2a9ae85..25464c9 100644
--- a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceType.java
+++ b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceType.java
@@ -115,8 +115,6 @@
 		buffer.append("abstract ");
 	if ((this.modifiers & ClassFileConstants.AccNative) != 0)
 		buffer.append("native ");
-	if ((this.modifiers & ClassFileConstants.AccSynchronized) != 0)
-		buffer.append("synchronized ");
 	return buffer.toString().trim();
 }
 public String getActualName() {
@@ -200,10 +198,7 @@
 	return false;
 }
 public boolean isClass() {
-	return (modifiers & ClassFileConstants.AccInterface) == 0;
-}
-public boolean isInterface() {
-	return (modifiers & ClassFileConstants.AccInterface) == ClassFileConstants.AccInterface;
+	return true;
 }
 public void setDeclarationSourceEnd(int position) {
 	declarationEnd = position;
@@ -247,7 +242,7 @@
 	if (displayModifiers != null) {
 		buffer.append(displayModifiers).append(" ");
 	}
-	buffer.append(isInterface() ? "interface " : "class ").append(name).append(" ");
+	buffer.append("class ").append(name).append(" ");
 	if (superclassName != null) {
 		buffer.append("extends ").append(superclassName).append(" ");
 	}
diff --git a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceUnit.java b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceUnit.java
index 60d700c..2d3e15c 100644
--- a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceUnit.java
+++ b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/parser/SourceUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -100,8 +100,6 @@
 		buffer.append("abstract ");
 	if ((this.modifiers & ClassFileConstants.AccNative) != 0)
 		buffer.append("native ");
-	if ((this.modifiers & ClassFileConstants.AccSynchronized) != 0)
-		buffer.append("synchronized ");
 	return buffer.toString().trim();
 }
 public String getActualName() {
@@ -188,10 +186,7 @@
 	return false;
 }
 public boolean isClass() {
-	return (modifiers & ClassFileConstants.AccInterface) == 0;
-}
-public boolean isInterface() {
-	return (modifiers & ClassFileConstants.AccInterface) == ClassFileConstants.AccInterface;
+	return true;
 }
 public void setDeclarationSourceEnd(int position) {
 	declarationEnd = position;
diff --git a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/regression/LookupTest.java b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/regression/LookupTest.java
index d6f7c8a..959fcc1 100644
--- a/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/regression/LookupTest.java
+++ b/tests/org.eclipse.wst.jsdt.core.tests.compiler/src/org/eclipse/wst/jsdt/core/tests/compiler/regression/LookupTest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,15 +14,11 @@
 import java.util.Hashtable;
 import java.util.Map;
 
-import org.eclipse.wst.jsdt.core.compiler.CharOperation;
+import junit.framework.Test;
+
 import org.eclipse.wst.jsdt.core.tests.util.Util;
-import org.eclipse.wst.jsdt.internal.compiler.CompilationResult;
-import org.eclipse.wst.jsdt.internal.compiler.ICompilerRequestor;
 import org.eclipse.wst.jsdt.internal.compiler.classfmt.ClassFileConstants;
 import org.eclipse.wst.jsdt.internal.compiler.impl.CompilerOptions;
-import org.eclipse.wst.jsdt.internal.compiler.lookup.TypeConstants;
-
-import junit.framework.Test;
 /**
  * Name Lookup within Inner Classes
  * Creation date: (8/2/00 12:04:53 PM)
@@ -1631,34 +1627,6 @@
 			"}\n"	},
 		"String: Hello world");
 }
-// 73740 - missing serialVersionUID diagnosis shouldn't trigger load of Serializable
-public void test048() {
-	this.runConformTest(
-		new String[] {
-			"X.java", //---------------------------
-			"public class X {\n" + 
-			"   public static void main(String[] args) {\n"+
-			"		System.out.println(\"SUCCESS\");\n"+
-			"   }\n"+
-			"}\n",
-		},
-		"SUCCESS",
-		Util.concatWithClassLibs(OUTPUT_DIR, true/*output in front*/),
-		false, // do not flush output
-		null,  // vm args
-		null, // options
-		new ICompilerRequestor() {
-			public void acceptResult(CompilationResult result) {
-				assertNotNull("missing reference information",result.simpleNameReferences);
-				char[] serializable = TypeConstants.JAVA_IO_SERIALIZABLE[2];
-				for (int i = 0, length = result.simpleNameReferences.length; i < length; i++) {
-					char[] name = result.simpleNameReferences[i];
-					if (CharOperation.equals(name, serializable))
-						assertTrue("should not contain reference to Serializable", false);
-				}
-			}
-		});		
-}
 // 76682 - ClassCastException in qualified name computeConversion
 public void test049() {
 	this.runNegativeTest(
