diff --git a/bundles/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF
index c89ab35..6286186 100644
--- a/bundles/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.cocoa.macosx.x86_64;singleton:=true
 Bundle-Version: 1.1.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )
 Bundle-Localization: launcher.cocoa.macosx.x86_64
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.aarch64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.aarch64/META-INF/MANIFEST.MF
index 046f8c9..9ee743a 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.linux.aarch64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.aarch64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.aarch64;singleton:=true
 Bundle-Version: 1.1.300.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=aarch64))
 Bundle-Localization: launcher.gtk.linux.aarch64
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.arm/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.arm/META-INF/MANIFEST.MF
index 42a581d..50c11ef 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.linux.arm/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.arm/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.arm;singleton:=true
 Bundle-Version: 1.1.300.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=arm))
 Bundle-Localization: launcher.gtk.linux.arm
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF
index 05d5c46..b0d3750 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.ppc;singleton:=true
 Bundle-Version: 1.1.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=ppc))
 Bundle-Localization: launcher.gtk.linux.ppc
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64/META-INF/MANIFEST.MF
index bc94a66..1463c82 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.ppc64;singleton:=true
 Bundle-Version: 1.0.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=ppc64))
 Bundle-Localization: launcher.gtk.linux.ppc64
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64le/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64le/META-INF/MANIFEST.MF
index 0c3c66e..0eecd58 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64le/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64le/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.ppc64le;singleton:=true
 Bundle-Version: 1.0.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=ppc64le))
 Bundle-Localization: launcher.gtk.linux.ppc64le
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF
index f2d131a..43a271d 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.x86;singleton:=true
 Bundle-Version: 1.1.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=x86))
 Bundle-Localization: launcher.gtk.linux.x86
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF
index 7982dd3..379221d 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.x86_64;singleton:=true
 Bundle-Version: 1.1.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=x86_64))
 Bundle-Localization: launcher.gtk.linux.x86_64
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.solaris.sparcv9/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.solaris.sparcv9/META-INF/MANIFEST.MF
index 964e4b3..92e8ee0 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.solaris.sparcv9/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.solaris.sparcv9/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.solaris.sparcv9;singleton:=true
 Bundle-Version: 1.1.300.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=solaris) (osgi.arch=sparcv9))
 Bundle-Localization: launcher.gtk.solaris.sparcv9
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.gtk.solaris.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.solaris.x86_64/META-INF/MANIFEST.MF
index bb688ae..17d151f 100644
--- a/bundles/org.eclipse.equinox.launcher.gtk.solaris.x86_64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.gtk.solaris.x86_64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.solaris.x86_64;singleton:=true
 Bundle-Version: 1.1.300.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=solaris) (osgi.arch=x86_64))
 Bundle-Localization: launcher.gtk.solaris.x86_64
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF
index a884485..46e2627 100644
--- a/bundles/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.ia64;singleton:=true
 Bundle-Version: 1.2.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=ia64))
 Bundle-Localization: launcher.win32.win32.ia64
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF
index 0190ecc..1b402d4 100644
--- a/bundles/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.x86; singleton:=true
 Bundle-Version: 1.1.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
 Bundle-Localization: launcher.win32.win32.x86
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF
index bfb0ca4..373c51c 100644
--- a/bundles/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.x86_64;singleton:=true
 Bundle-Version: 1.1.400.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.5.0)"
+Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.4.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86_64))
 Bundle-Localization: launcher.win32.win32.x86_64
 Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/.classpath b/bundles/org.eclipse.equinox.launcher/.classpath
index ad32c83..d5735f0 100644
--- a/bundles/org.eclipse.equinox.launcher/.classpath
+++ b/bundles/org.eclipse.equinox.launcher/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/OSGi%Minimum-1.2"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
index c6687b0..739d2b2 100644
--- a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
@@ -1,3 +1,4 @@
+#Wed Apr 08 09:36:05 EDT 2009
 eclipse.preferences.version=1
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -6,24 +7,24 @@
 org.eclipse.jdt.core.circularClasspath=error
 org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
 org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.4
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.doc.comment.support=enabled
 org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
 org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
 org.eclipse.jdt.core.compiler.problem.deprecation=warning
 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=error
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
 org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
@@ -70,7 +71,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.3
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
diff --git a/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF
index 2933964..5c0e55a 100644
--- a/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF
@@ -2,11 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.equinox.launcher;singleton:=true
-Bundle-Version: 1.4.0.qualifier
+Bundle-Version: 1.3.200.qualifier
 Main-Class: org.eclipse.equinox.launcher.Main
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.2
 Bundle-Localization: launcher
 Export-Package: org.eclipse.core.launcher;x-internal:=true,
  org.eclipse.equinox.internal.launcher;x-internal:=true,
diff --git a/bundles/org.eclipse.equinox.launcher/pom.xml b/bundles/org.eclipse.equinox.launcher/pom.xml
index fa139cf..3bbd119 100644
--- a/bundles/org.eclipse.equinox.launcher/pom.xml
+++ b/bundles/org.eclipse.equinox.launcher/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.equinox</groupId>
   <artifactId>org.eclipse.equinox.launcher</artifactId>
-  <version>1.4.0-SNAPSHOT</version>
+  <version>1.3.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java
index a1057f5..66dd88d 100644
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java
+++ b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2015 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
@@ -531,10 +531,10 @@
 			return null;
 		}
 
-		Enumeration<? extends ZipEntry> entries = fragmentJar.entries();
+		Enumeration entries = fragmentJar.entries();
 		String entry = null;
 		while (entries.hasMoreElements()) {
-			ZipEntry zipEntry = entries.nextElement();
+			ZipEntry zipEntry = (ZipEntry) entries.nextElement();
 			if (zipEntry.getName().startsWith("eclipse_")) { //$NON-NLS-1$
 				entry = zipEntry.getName();
 				try {
@@ -667,10 +667,10 @@
 		} else if (PARENT_CLASSLOADER_CURRENT.equalsIgnoreCase(type))
 			parent = this.getClass().getClassLoader();
 		URLClassLoader loader = new StartupClassLoader(bootPath, parent);
-		Class<?> clazz = loader.loadClass(STARTER);
-		Method method = clazz.getDeclaredMethod("run", String[].class, Runnable.class); //$NON-NLS-1$
+		Class clazz = loader.loadClass(STARTER);
+		Method method = clazz.getDeclaredMethod("run", new Class[] {String[].class, Runnable.class}); //$NON-NLS-1$
 		try {
-			method.invoke(clazz, passThruArgs, splashHandler);
+			method.invoke(clazz, new Object[] {passThruArgs, splashHandler});
 		} catch (InvocationTargetException e) {
 			if (e.getTargetException() instanceof Error)
 				throw (Error) e.getTargetException();
@@ -757,8 +757,8 @@
 	protected String decode(String urlString) {
 		//try to use Java 1.4 method if available
 		try {
-			Class<URLDecoder> clazz = URLDecoder.class;
-			Method method = clazz.getDeclaredMethod("decode", String.class, String.class); //$NON-NLS-1$
+			Class clazz = URLDecoder.class;
+			Method method = clazz.getDeclaredMethod("decode", new Class[] {String.class, String.class}); //$NON-NLS-1$
 			//first encode '+' characters, because URLDecoder incorrectly converts 
 			//them to spaces on certain class library implementations.
 			if (urlString.indexOf('+') >= 0) {
@@ -773,7 +773,7 @@
 				}
 				urlString = buf.toString();
 			}
-			Object result = method.invoke(null, urlString, "UTF-8"); //$NON-NLS-1$
+			Object result = method.invoke(null, new Object[] {urlString, "UTF-8"}); //$NON-NLS-1$
 			if (result != null)
 				return (String) result;
 		} catch (Exception e) {
@@ -816,14 +816,14 @@
 	protected String[] getArrayFromList(String prop) {
 		if (prop == null || prop.trim().equals("")) //$NON-NLS-1$
 			return new String[0];
-		Vector<String> list = new Vector<String>();
+		Vector list = new Vector();
 		StringTokenizer tokens = new StringTokenizer(prop, ","); //$NON-NLS-1$
 		while (tokens.hasMoreTokens()) {
 			String token = tokens.nextToken().trim();
 			if (!token.equals("")) //$NON-NLS-1$
 				list.addElement(token);
 		}
-		return list.isEmpty() ? new String[0] : list.toArray(new String[list.size()]);
+		return list.isEmpty() ? new String[0] : (String[]) list.toArray(new String[list.size()]);
 	}
 
 	/**
@@ -835,12 +835,12 @@
 	 * @exception MalformedURLException if a problem occurs computing the class path
 	 */
 	private URL[] getDevPath(URL base) throws IOException {
-		ArrayList<URL> result = new ArrayList<URL>(5);
+		ArrayList result = new ArrayList(5);
 		if (inDevelopmentMode)
 			addDevEntries(base, result, OSGI);
 		//The jars from the base always need to be added, even when running in dev mode (bug 46772)
 		addBaseJars(base, result);
-		return result.toArray(new URL[result.size()]);
+		return (URL[]) result.toArray(new URL[result.size()]);
 	}
 
 	URL constructURL(URL url, String name) {
@@ -865,10 +865,10 @@
 		}
 	}
 
-	private void readFrameworkExtensions(URL base, ArrayList<URL> result) throws IOException {
+	private void readFrameworkExtensions(URL base, ArrayList result) throws IOException {
 		String[] extensions = getArrayFromList(System.getProperties().getProperty(PROP_EXTENSIONS));
 		String parent = new File(base.getFile()).getParent().toString();
-		ArrayList<String> extensionResults = new ArrayList<String>(extensions.length);
+		ArrayList extensionResults = new ArrayList(extensions.length);
 		for (int i = 0; i < extensions.length; i++) {
 			//Search the extension relatively to the osgi plugin 
 			String path = searchForBundle(extensions[i], parent);
@@ -924,10 +924,10 @@
 				addDevEntries(extensionURL, result, name);
 			}
 		}
-		extensionPaths = extensionResults.toArray(new String[extensionResults.size()]);
+		extensionPaths = (String[]) extensionResults.toArray(new String[extensionResults.size()]);
 	}
 
-	private void addBaseJars(URL base, ArrayList<URL> result) throws IOException {
+	private void addBaseJars(URL base, ArrayList result) throws IOException {
 		String baseJarList = System.getProperty(PROP_CLASSPATH);
 		if (baseJarList == null) {
 			readFrameworkExtensions(base, result);
@@ -979,12 +979,12 @@
 		}
 	}
 
-	protected void addEntry(URL url, List<URL> result) {
+	protected void addEntry(URL url, List result) {
 		if (new File(url.getFile()).exists())
 			result.add(url);
 	}
 
-	private void addDevEntries(URL base, List<URL> result, String symbolicName) throws MalformedURLException {
+	private void addDevEntries(URL base, List result, String symbolicName) throws MalformedURLException {
 		if (devClassPathProps == null)
 			return; // do nothing
 		String devPathList = devClassPathProps.getProperty(symbolicName);
@@ -1066,12 +1066,12 @@
 		if (candidates == null)
 			return null;
 
-		ArrayList<String> matches = new ArrayList<String>(2);
+		ArrayList matches = new ArrayList(2);
 		for (int i = 0; i < candidates.length; i++) {
 			if (isMatchingCandidate(target, candidates[i], root))
 				matches.add(candidates[i]);
 		}
-		String[] names = matches.toArray(new String[matches.size()]);
+		String[] names = (String[]) matches.toArray(new String[matches.size()]);
 		int result = findMax(target, names);
 		if (result == -1)
 			return null;
@@ -1465,10 +1465,10 @@
 	 * @param argString the arguments string
 	 */
 	public static void main(String argString) {
-		Vector<String> list = new Vector<String>(5);
+		Vector list = new Vector(5);
 		for (StringTokenizer tokens = new StringTokenizer(argString, " "); tokens.hasMoreElements();) //$NON-NLS-1$
-			list.addElement(tokens.nextToken());
-		main(list.toArray(new String[list.size()]));
+			list.addElement(tokens.nextElement());
+		main((String[]) list.toArray(new String[list.size()]));
 	}
 
 	/**
@@ -2251,7 +2251,7 @@
 		String splashPath = System.getProperty(PROP_SPLASHPATH);
 		if (splashPath != null) {
 			String[] entries = getArrayFromList(splashPath);
-			ArrayList<String> path = new ArrayList<String>(entries.length);
+			ArrayList path = new ArrayList(entries.length);
 			for (int i = 0; i < entries.length; i++) {
 				String entry = resolve(entries[i]);
 				if (entry != null && entry.startsWith(FILE_SCHEME)) {
@@ -2263,7 +2263,7 @@
 					log("Invalid splash path entry: " + entries[i]); //$NON-NLS-1$
 			}
 			// see if we can get a splash given the splash path
-			result = searchForSplash(path.toArray(new String[path.size()]));
+			result = searchForSplash((String[]) path.toArray(new String[path.size()]));
 			if (result != null) {
 				System.getProperties().put(PROP_SPLASHLOCATION, result);
 				return result;
@@ -2438,7 +2438,7 @@
 	private static String[] buildNLVariants(String locale) {
 		//build list of suffixes for loading resource bundles
 		String nl = locale;
-		ArrayList<String> result = new ArrayList<String>(4);
+		ArrayList result = new ArrayList(4);
 		int lastSeparator;
 		while (true) {
 			result.add("nl" + File.separatorChar + nl.replace('_', File.separatorChar) + File.separatorChar + SPLASH_IMAGE); //$NON-NLS-1$
@@ -2449,7 +2449,7 @@
 		}
 		//add the empty suffix last (most general)
 		result.add(SPLASH_IMAGE);
-		return result.toArray(new String[result.size()]);
+		return (String[]) result.toArray(new String[result.size()]);
 	}
 
 	/*
@@ -2670,7 +2670,7 @@
 		final String EXT_OVERRIDE_USER = ".override.user"; //$NON-NLS-1$
 		if (destination == null || source == null)
 			return;
-		for (Enumeration<?> e = source.keys(); e.hasMoreElements();) {
+		for (Enumeration e = source.keys(); e.hasMoreElements();) {
 			String key = (String) e.nextElement();
 			if (key.equals(PROP_CLASSPATH)) {
 				String destinationClasspath = destination.getProperty(PROP_CLASSPATH);
@@ -2766,15 +2766,15 @@
 					return true;
 				}
 
-				public Enumeration<Permission> elements() {
-					return new Enumeration<Permission>() {
+				public Enumeration elements() {
+					return new Enumeration() {
 						int cur = 0;
 
 						public boolean hasMoreElements() {
 							return cur < 1;
 						}
 
-						public Permission nextElement() {
+						public Object nextElement() {
 							if (cur == 0) {
 								cur = 1;
 								return allPermission;
@@ -2857,7 +2857,7 @@
 			//nothing todo.
 			return null;
 		}
-		for (Enumeration<?> eKeys = result.keys(); eKeys.hasMoreElements();) {
+		for (Enumeration eKeys = result.keys(); eKeys.hasMoreElements();) {
 			Object key = eKeys.nextElement();
 			if (key instanceof String) {
 				String value = result.getProperty((String) key);
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java
index 3d425b8..98e9ad1 100644
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java
+++ b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2016 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 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
@@ -39,8 +39,8 @@
 	private static final String PROP_OSGI_BUNDLES = "osgi.bundles"; //$NON-NLS-1$
 	private static final String PROP_CHECK_CONFIG = "osgi.checkConfiguration"; //$NON-NLS-1$
 
-	private Map<String, List<BundleInfo>> allBundles = null; // Map of all the bundles found on the classpath. Id -> ArrayList of BundleInfo
-	private List<BundleInfo> bundleList = null; //The list of bundles found on the osgi.bundle list 
+	private Map allBundles = null; // Map of all the bundles found on the classpath. Id -> ArrayList of BundleInfo
+	private List bundleList = null; //The list of bundles found on the osgi.bundle list 
 
 	protected class BundleInfo {
 		String bsn;
@@ -100,12 +100,12 @@
 	 * The start parameter is not used in this context
 	 */
 	protected String searchFor(final String target, String start) {
-		List<BundleInfo> matches = allBundles.get(target);
+		ArrayList matches = (ArrayList) allBundles.get(target);
 		if (matches == null)
 			return null;
 		int numberOfMatches = matches.size();
 		if (numberOfMatches == 1) {
-			return matches.get(0).location;
+			return ((BundleInfo) matches.get(0)).location;
 		}
 		if (numberOfMatches == 0)
 			return null;
@@ -113,25 +113,25 @@
 		String[] versions = new String[numberOfMatches];
 		int highest = 0;
 		for (int i = 0; i < versions.length; i++) {
-			versions[i] = matches.get(i).version;
+			versions[i] = ((BundleInfo) matches.get(i)).version;
 		}
 		highest = findMax(null, versions);
-		return matches.get(highest).location;
+		return ((BundleInfo) matches.get(highest)).location;
 	}
 
 	private BundleInfo findBundle(final String target, String version, boolean removeMatch) {
-		List<BundleInfo> matches = allBundles.get(target);
+		ArrayList matches = (ArrayList) allBundles.get(target);
 		int numberOfMatches = matches != null ? matches.size() : 0;
 		if (numberOfMatches == 1) {
 			//TODO Need to check the version
-			return removeMatch ? matches.remove(0) : matches.get(0);
+			return (BundleInfo) (removeMatch ? matches.remove(0) : matches.get(0));
 		}
 		if (numberOfMatches == 0)
 			return null;
 
 		if (version != null) {
-			for (Iterator<BundleInfo> iterator = matches.iterator(); iterator.hasNext();) {
-				BundleInfo bi = iterator.next();
+			for (Iterator iterator = matches.iterator(); iterator.hasNext();) {
+				BundleInfo bi = (BundleInfo) iterator.next();
 				if (bi.version.equals(version)) {
 					if (removeMatch)
 						iterator.remove();
@@ -144,26 +144,26 @@
 		String[] versions = new String[numberOfMatches];
 		int highest = 0;
 		for (int i = 0; i < versions.length; i++) {
-			versions[i] = matches.get(i).version;
+			versions[i] = ((BundleInfo) matches.get(i)).version;
 		}
 		highest = findMax(null, versions);
-		return removeMatch ? matches.remove(highest) : matches.get(highest);
+		return (BundleInfo) (removeMatch ? matches.remove(highest) : matches.get(highest));
 	}
 
 	/* 
 	 * Get all the bundles available on the webstart classpath
 	 */
 	private void discoverBundles() {
-		allBundles = new HashMap<String, List<BundleInfo>>();
+		allBundles = new HashMap();
 		try {
-			Enumeration<URL> resources = WebStartMain.class.getClassLoader().getResources(JarFile.MANIFEST_NAME);
+			Enumeration resources = WebStartMain.class.getClassLoader().getResources(JarFile.MANIFEST_NAME);
 			while (resources.hasMoreElements()) {
-				BundleInfo found = getBundleInfo(resources.nextElement());
+				BundleInfo found = getBundleInfo((URL) resources.nextElement());
 				if (found == null)
 					continue;
-				List<BundleInfo> matching = allBundles.get(found.bsn);
+				ArrayList matching = (ArrayList) allBundles.get(found.bsn);
 				if (matching == null) {
-					matching = new ArrayList<BundleInfo>(1);
+					matching = new ArrayList(1);
 					allBundles.put(found.bsn, matching);
 				}
 				matching.add(found);
@@ -243,11 +243,11 @@
 		//In webstart the bundles list can only contain bundle names with or without a version.
 		String prop = System.getProperty(PROP_OSGI_BUNDLES);
 		if (prop == null || prop.trim().equals("")) { //$NON-NLS-1$
-			bundleList = new ArrayList<BundleInfo>(0);
+			bundleList = new ArrayList(0);
 			return;
 		}
 
-		bundleList = new ArrayList<BundleInfo>(10);
+		bundleList = new ArrayList(10);
 		StringTokenizer tokens = new StringTokenizer(prop, ","); //$NON-NLS-1$
 		while (tokens.hasMoreTokens()) {
 			String token = tokens.nextToken().trim();
@@ -300,18 +300,18 @@
 	private void buildOSGiBundleList() {
 		StringBuffer finalBundleList = new StringBuffer(allBundles.size() * 30);
 		//First go through all the bundles of the bundle
-		for (Iterator<BundleInfo> iterator = bundleList.iterator(); iterator.hasNext();) {
-			BundleInfo searched = iterator.next();
+		for (Iterator iterator = bundleList.iterator(); iterator.hasNext();) {
+			BundleInfo searched = (BundleInfo) iterator.next();
 			BundleInfo found = findBundle(searched.bsn, searched.version, true);
 			if (found != null)
 				finalBundleList.append(REFERENCE_SCHEME).append(found.location).append(searched.startData).append(',');
 		}
 
 		if (!Boolean.FALSE.toString().equalsIgnoreCase(System.getProperties().getProperty(PROP_WEBSTART_AUTOMATIC_INSTALLATION))) {
-			for (Iterator<List<BundleInfo>> iterator = allBundles.values().iterator(); iterator.hasNext();) {
-				List<BundleInfo> toAdd = iterator.next();
-				for (Iterator<BundleInfo> iterator2 = toAdd.iterator(); iterator2.hasNext();) {
-					BundleInfo bi = iterator2.next();
+			for (Iterator iterator = allBundles.values().iterator(); iterator.hasNext();) {
+				ArrayList toAdd = (ArrayList) iterator.next();
+				for (Iterator iterator2 = toAdd.iterator(); iterator2.hasNext();) {
+					BundleInfo bi = (BundleInfo) iterator2.next();
 					finalBundleList.append(REFERENCE_SCHEME).append(bi.location).append(',');
 				}
 			}
