diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
index 8337ad8..2a4cea6 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
@@ -727,9 +727,9 @@
 	 */
 	public void setChangeIgnored(int kind, boolean ignored) {
 		if (ignored) {
-			fIgnoredChanges.add(new Integer(kind));
+			fIgnoredChanges.add(Integer.valueOf(kind));
 		} else {
-			fIgnoredChanges.remove(new Integer(kind));
+			fIgnoredChanges.remove(Integer.valueOf(kind));
 		}
 	}
 
@@ -747,7 +747,7 @@
 	 * @since 3.5
 	 */
 	public boolean isChangeIgnored(int kind) {
-		return fIgnoredChanges.contains(new Integer(kind));
+		return fIgnoredChanges.contains(Integer.valueOf(kind));
 	}
 
 }
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
index f76b888..5b417a4 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
@@ -215,16 +215,16 @@
 							other.extract(otherIndex, includeSeparator), other.fContributor,
 							fCompareFilters);
 					fCompareFilterCache
-							.put(new Integer(thisIndex), extracts[0]);
+							.put(Integer.valueOf(thisIndex), extracts[0]);
 				}
 
 				extracts[1] = (String) other.fCompareFilterCache
-						.get(new Integer(otherIndex));
+						.get(Integer.valueOf(otherIndex));
 				if (extracts[1] == null) {
 					extracts[1] = Utilities.applyCompareFilters(
 							other.extract(otherIndex, includeSeparator), other.fContributor,
 							extract(thisIndex, includeSeparator), fContributor, fCompareFilters);
-					other.fCompareFilterCache.put(new Integer(otherIndex),
+					other.fCompareFilterCache.put(Integer.valueOf(otherIndex),
 							extracts[1]);
 				}
 			} else {
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
index c99c59c..a6af9ab 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
@@ -809,7 +809,7 @@
 		for (int i = 0; i < methods.length; i++) {
 			if (methods[i].getName().equals("setReadTimeout")) { //$NON-NLS-1$
 				try {
-					methods[i].invoke(connection, new Object[] {new Integer(timeout)});
+					methods[i].invoke(connection, new Object[] {Integer.valueOf(timeout)});
 					return true;
 				} catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
 					// ignore
diff --git a/bundles/org.eclipse.jsch.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jsch.core/META-INF/MANIFEST.MF
index a7ec788..3ad3083 100644
--- a/bundles/org.eclipse.jsch.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jsch.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jsch.core;singleton:=true
-Bundle-Version: 1.3.0.qualifier
+Bundle-Version: 1.3.100.qualifier
 Bundle-Activator: org.eclipse.jsch.internal.core.JSchCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.jsch.core/pom.xml b/bundles/org.eclipse.jsch.core/pom.xml
index 41183cc..3981b06 100644
--- a/bundles/org.eclipse.jsch.core/pom.xml
+++ b/bundles/org.eclipse.jsch.core/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.jsch</groupId>
   <artifactId>org.eclipse.jsch.core</artifactId>
-  <version>1.3.0-SNAPSHOT</version>
+  <version>1.3.100-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/JSchLocation.java b/bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/JSchLocation.java
index 4bc5e6a..149dc63 100644
--- a/bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/JSchLocation.java
+++ b/bundles/org.eclipse.jsch.core/src/org/eclipse/jsch/internal/core/JSchLocation.java
@@ -123,6 +123,6 @@
    */
   public String toString(){
     return user
-        +"@"+host+((port==DEFAULT_PORT) ? "" : ":"+(new Integer(port).toString())); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+        +"@"+host+((port==DEFAULT_PORT) ? "" : ":"+(Integer.valueOf(port).toString())); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
   }
 }
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/diff/provider/DiffTree.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/diff/provider/DiffTree.java
index 5e3ead0..0a440ba 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/diff/provider/DiffTree.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/diff/provider/DiffTree.java
@@ -343,7 +343,7 @@
 	}
 
 	private void accumulatePropertyChanges(int property, IPath[] paths) {
-		Integer key = new Integer(property);
+		Integer key = Integer.valueOf(property);
 		Set<IPath> changes = propertyChanges.get(key);
 		if (changes == null) {
 			changes = new HashSet<>();
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWaySynchronizer.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWaySynchronizer.java
index a69f718..9372ae7 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWaySynchronizer.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWaySynchronizer.java
@@ -154,7 +154,7 @@
 				beginOperation();
 				String base = new String(baseBytes);
 				String[] slots = new String[] {
-						new Long(resource.getModificationStamp()).toString(),
+						Long.valueOf(resource.getModificationStamp()).toString(),
 						base,
 						base
 				};
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileContentManager.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileContentManager.java
index b11c740..d3ee630 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileContentManager.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileContentManager.java
@@ -116,7 +116,7 @@
             for (int i = 0; i < numberOfMappings; i++) {
                 final String extension = input.readUTF();
                 final int type = input.readInt();
-                result.put(extension, new Integer(type));
+                result.put(extension, Integer.valueOf(type));
             }
             return result;
         }
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/PluginStringMappings.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/PluginStringMappings.java
index d2de69f..3394bd1 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/PluginStringMappings.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/PluginStringMappings.java
@@ -60,9 +60,9 @@
                     continue;
 
                 if (type.equals("text")) { //$NON-NLS-1$
-                    result.put(ext, new Integer(Team.TEXT));
+                    result.put(ext, Integer.valueOf(Team.TEXT));
                 } else if (type.equals("binary")) { //$NON-NLS-1$
-                    result.put(ext, new Integer(Team.BINARY));
+                    result.put(ext, Integer.valueOf(Team.BINARY));
                 }
             }
         }
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/UserStringMappings.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/UserStringMappings.java
index a56cc93..256f2ba 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/UserStringMappings.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/UserStringMappings.java
@@ -21,9 +21,9 @@
 
 public class UserStringMappings implements Preferences.IPropertyChangeListener {
 
-    public static final Integer BINARY= new Integer(Team.BINARY);
-    public  static final Integer TEXT= new Integer(Team.TEXT);
-    public static final Integer UNKNOWN= new Integer(Team.UNKNOWN);
+    public static final Integer BINARY= Integer.valueOf(Team.BINARY);
+    public  static final Integer TEXT= Integer.valueOf(Team.TEXT);
+    public static final Integer UNKNOWN= Integer.valueOf(Team.UNKNOWN);
 
 
     private static final String PREF_TEAM_SEPARATOR = "\n"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/DiffTreeStatistics.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/DiffTreeStatistics.java
index e8b7453..757f6f1 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/DiffTreeStatistics.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/DiffTreeStatistics.java
@@ -28,11 +28,11 @@
 	 */
 	public void add(int state) {
 		// update statistics
-		Long count = stats.get(new Integer(state));
+		Long count = stats.get(Integer.valueOf(state));
 		if(count == null) {
-			count = new Long(0);
+			count = Long.valueOf(0);
 		}
-		stats.put(new Integer(state), new Long(count.longValue() + 1));
+		stats.put(Integer.valueOf(state), Long.valueOf(count.longValue() + 1));
 	}
 
 	/**
@@ -41,7 +41,7 @@
 	 */
 	public void remove(int state) {
 		// update stats
-		Integer kind = new Integer(state);
+		Integer kind = Integer.valueOf(state);
 		Long count = stats.get(kind);
 		if(count == null) {
 			// error condition, shouldn't be removing if we haven't added yet
@@ -49,7 +49,7 @@
 		} else {
 			long newCount = count.intValue() - 1;
 			if(newCount > 0) {
-				stats.put(kind, new Long(newCount));
+				stats.put(kind, Long.valueOf(newCount));
 			} else {
 				stats.remove(kind);
 			}
@@ -68,7 +68,7 @@
 	 */
 	public long countFor(int state, int mask) {
 		if(mask == 0) {
-			Long count = stats.get(new Integer(state));
+			Long count = stats.get(Integer.valueOf(state));
 			return count == null ? 0 : count.longValue();
 		} else {
 			Set keySet = stats.keySet();
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncInfoStatistics.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncInfoStatistics.java
index 5366f7a..5cdb146 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncInfoStatistics.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncInfoStatistics.java
@@ -29,11 +29,11 @@
 	 */
 	public void add(SyncInfo info) {
 		// update statistics
-		Long count = stats.get(new Integer(info.getKind()));
+		Long count = stats.get(Integer.valueOf(info.getKind()));
 		if(count == null) {
-			count = new Long(0);
+			count = Long.valueOf(0);
 		}
-		stats.put(new Integer(info.getKind()), new Long(count.longValue() + 1));
+		stats.put(Integer.valueOf(info.getKind()), Long.valueOf(count.longValue() + 1));
 	}
 
 	/**
@@ -42,7 +42,7 @@
 	 */
 	public void remove(SyncInfo info) {
 		// update stats
-		Integer kind = new Integer(info.getKind());
+		Integer kind = Integer.valueOf(info.getKind());
 		Long count = stats.get(kind);
 		if(count == null) {
 			// error condition, shouldn't be removing if we haven't added yet
@@ -50,7 +50,7 @@
 		} else {
 			long newCount = count.intValue() - 1;
 			if(newCount > 0) {
-				stats.put(kind, new Long(newCount));
+				stats.put(kind, Long.valueOf(newCount));
 			} else {
 				stats.remove(kind);
 			}
@@ -69,7 +69,7 @@
 	 */
 	public long countFor(int kind, int mask) {
 		if(mask == 0) {
-			Long count = stats.get(new Integer(kind));
+			Long count = stats.get(Integer.valueOf(kind));
 			return count == null ? 0 : count.longValue();
 		} else {
 			Iterator it = stats.keySet().iterator();
diff --git a/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
index a8b508a..34124ff 100644
--- a/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.cvs.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.team.cvs.core; singleton:=true
-Bundle-Version: 3.4.100.qualifier
+Bundle-Version: 3.4.200.qualifier
 Bundle-Activator: org.eclipse.team.internal.ccvs.core.CVSProviderPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.team.cvs.core/pom.xml b/bundles/org.eclipse.team.cvs.core/pom.xml
index de1e4c7..d37aac8 100644
--- a/bundles/org.eclipse.team.cvs.core/pom.xml
+++ b/bundles/org.eclipse.team.cvs.core/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.team</groupId>
   <artifactId>org.eclipse.team.cvs.core</artifactId>
-  <version>3.4.100-SNAPSHOT</version>
+  <version>3.4.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java
index d84deb7..215fd0d 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java
@@ -544,7 +544,7 @@
 				dis.readUTF();
 			}
 		} else {
-			Util.logError(NLS.bind(CVSMessages.CVSProviderPlugin_unknownStateFileVersion, new String[] { new Integer(count).toString() }), null); 
+			Util.logError(NLS.bind(CVSMessages.CVSProviderPlugin_unknownStateFileVersion, new String[] { Integer.valueOf(count).toString() }), null); 
 		}
 	}
 		
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
index a5343e5..5967cb5 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
@@ -596,7 +596,7 @@
 				((passwordFixed && !forDisplay)?(COLON + password):"")//$NON-NLS-1$ 
 					+ HOST_SEPARATOR):"") +//$NON-NLS-1$ 
 			host + COLON +
-			((port == USE_DEFAULT_PORT)?"":(new Integer(port).toString())) + //$NON-NLS-1$ 
+			((port == USE_DEFAULT_PORT)?"":(Integer.valueOf(port).toString())) + //$NON-NLS-1$ 
 			root;
 	}
 	
@@ -1113,7 +1113,7 @@
 		CVS_RSH_PARAMETERS = stringReplace(CVS_RSH_PARAMETERS, USER_VARIABLE, user);
 		CVS_RSH_PARAMETERS = stringReplace(CVS_RSH_PARAMETERS, PASSWORD_VARIABLE, password);
 		CVS_RSH_PARAMETERS = stringReplace(CVS_RSH_PARAMETERS, HOST_VARIABLE, host);
-		CVS_RSH_PARAMETERS = stringReplace(CVS_RSH_PARAMETERS, PORT_VARIABLE, new Integer(port).toString());
+		CVS_RSH_PARAMETERS = stringReplace(CVS_RSH_PARAMETERS, PORT_VARIABLE, Integer.valueOf(port).toString());
 
 		// Build the command list to be sent to the OS.
 		List<String> commands = new ArrayList<String>();
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java
index 3030ae0..e629e9c 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java
@@ -359,11 +359,11 @@
 				} else {
 					List notificationCharacters = new ArrayList();
 					if ((notifications & NOTIFY_ON_EDIT) >0) 
-						notificationCharacters.add(new Character(NotifyInfo.EDIT));
+						notificationCharacters.add(Character.valueOf(NotifyInfo.EDIT));
 					if ((notifications & NOTIFY_ON_UNEDIT) >0) 
-						notificationCharacters.add(new Character(NotifyInfo.UNEDIT));
+						notificationCharacters.add(Character.valueOf(NotifyInfo.UNEDIT));
 					if ((notifications & NOTIFY_ON_COMMIT) >0) 
-						notificationCharacters.add(new Character(NotifyInfo.COMMIT));
+						notificationCharacters.add(Character.valueOf(NotifyInfo.COMMIT));
 					internalFormat = new char[notificationCharacters.size()];
 					for (int i = 0; i < internalFormat.length; i++) {
 						internalFormat[i] = ((Character)notificationCharacters.get(i)).charValue();
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/FileModificationManager.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/FileModificationManager.java
index 9b96929..c6cf43b 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/FileModificationManager.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/FileModificationManager.java
@@ -112,7 +112,7 @@
 		try {
 			if (mFile instanceof EclipseFile) {
 				IFile file = (IFile)mFile.getIResource();
-				file.setSessionProperty(UPDATE_TIMESTAMP, new Long(file.getModificationStamp()));
+				file.setSessionProperty(UPDATE_TIMESTAMP, Long.valueOf(file.getModificationStamp()));
 			}
 		} catch (CoreException e) {
 			CVSProviderPlugin.log(e);
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/StringMatcher.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/StringMatcher.java
index 0597464..4cb36ab 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/StringMatcher.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/StringMatcher.java
@@ -329,7 +329,7 @@
 						break;
 					}
 					CharacterClass cc = new CharacterClass(negated, fPattern.substring(beginPos, endPos));
-					segmentCCs.put(new Integer(buf.length()), cc);
+					segmentCCs.put(Integer.valueOf(buf.length()), cc);
 					pos = endPos + 1;
 					/* fall through; fSingleWildCard can also represent a character class */
 				case '?':
@@ -402,7 +402,7 @@
 				if (pchar == fSingleWildCard) {
 					if (ccMap == null)
 						continue;
-					CharacterClass cc = (CharacterClass) ccMap.get(new Integer(ppos));
+					CharacterClass cc = (CharacterClass) ccMap.get(Integer.valueOf(ppos));
 					if (cc == null || cc.match(tchar))
 						continue;
 					else
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileWriter.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileWriter.java
index 6b235b4..8e98109 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileWriter.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileWriter.java
@@ -602,7 +602,7 @@
 						} else {
 							file.setContents(new ByteArrayInputStream(os.toByteArray()), IResource.FORCE /*don't keep history but do force*/, null);
 						}			
-						file.setSessionProperty(MODSTAMP_KEY, new Long(file.getModificationStamp()));
+						file.setSessionProperty(MODSTAMP_KEY, Long.valueOf(file.getModificationStamp()));
 					} catch(CVSException e) {
 						throw new CoreException(e.getStatus());
 					}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
index 72435d1..5c0e4e3 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
@@ -59,9 +59,9 @@
 			 
 		// add a description label
 		if (unaddedResources.length==1) {
-			createWrappingLabel(composite, NLS.bind(CVSUIMessages.AddToVersionControlDialog_thereIsAnUnaddedResource, new String[] { new Integer(unaddedResources.length).toString() }));  
+			createWrappingLabel(composite, NLS.bind(CVSUIMessages.AddToVersionControlDialog_thereIsAnUnaddedResource, new String[] { Integer.valueOf(unaddedResources.length).toString() }));  
 		} else {
-			createWrappingLabel(composite, NLS.bind(CVSUIMessages.AddToVersionControlDialog_thereAreUnaddedResources, new String[] { new Integer(unaddedResources.length).toString() }));  
+			createWrappingLabel(composite, NLS.bind(CVSUIMessages.AddToVersionControlDialog_thereAreUnaddedResources, new String[] { Integer.valueOf(unaddedResources.length).toString() }));  
 		}
 	}
 
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java
index 0f3a2de..be580d4 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java
@@ -111,7 +111,7 @@
 					default: {
 						String oldText = passwordText.getText();
 						String x = getXs();
-						numXs.add(numXs.size(), new Integer(x.length()));
+						numXs.add(numXs.size(), Integer.valueOf(x.length()));
 						String newText = oldText + x;
 						passwordText.setText(newText);
 						passwordText.setSelection(newText.length());
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java
index e567b17..b28aa9c 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java
@@ -2133,7 +2133,7 @@
 		if (historyPageSite instanceof WorkbenchHistoryPageSite){
 			IWorkbenchPart part = ((WorkbenchHistoryPageSite) historyPageSite).getPart();
 			if (part instanceof GenericHistoryView){
-				String revisions = NLS.bind(CVSUIMessages.CVSHistoryPage_FilterOnMessage, new Object[]{new Integer(historyFilter.getMatchCount()),new Integer(before)});
+				String revisions = NLS.bind(CVSUIMessages.CVSHistoryPage_FilterOnMessage, new Object[]{Integer.valueOf(historyFilter.getMatchCount()),new Integer(before)});
 				String old = getName();
 				description = NLS.bind(CVSUIMessages.CVSHistoryPage_FilterDescription, new Object[]{file.getName(), revisions});
 				CVSHistoryPage.this.firePropertyChange(CVSHistoryPage.this, P_NAME, old, getName());
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java
index a54155f..15a095d 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java
@@ -148,7 +148,7 @@
 		}
 		
 		protected Object getValue(IPreferenceStore store, String key) {
-			return new Integer(store.getInt(key));			
+			return Integer.valueOf(store.getInt(key));			
 		}
 	}
 	
@@ -221,7 +221,7 @@
 		}
 
 		protected Object loadValue(IPreferenceStore store, String key) {
-			return new Integer(store.getInt(key));
+			return Integer.valueOf(store.getInt(key));
 		}
 
 		protected void saveValue(IPreferenceStore store, String key, Object value) {
@@ -330,7 +330,7 @@
 				CVSUIMessages.CVSPreferencesPage_9 */};      
 		COMPRESSION_VALUES= new Integer [COMPRESSION_LABELS.length];
 		for (int i = 0; i < COMPRESSION_VALUES.length; i++) {
-			COMPRESSION_VALUES[i]= new Integer(i);
+			COMPRESSION_VALUES[i]= Integer.valueOf(i);
 		}
 		
 	    final IPerspectiveDescriptor [] perspectives= PlatformUI.getWorkbench().getPerspectiveRegistry().getPerspectives();
@@ -462,7 +462,7 @@
 				CVSUIMessages.CVSPreferencesPage_26,  
 				IHelpContextIds.PREF_QUIET,
 				new String [] { CVSUIMessages.CVSPreferencesPage_27, CVSUIMessages.CVSPreferencesPage_28, CVSUIMessages.CVSPreferencesPage_29 }, //  
-				new Integer [] { new Integer(0), new Integer(1), new Integer(2)});
+				new Integer [] { Integer.valueOf(0), new Integer(1), new Integer(2)});
 		
 		quietnessCombo.getCombo().addSelectionListener(new SelectionListener() {
 			public void widgetSelected(SelectionEvent e) {
@@ -531,7 +531,7 @@
 				CVSUIMessages.CVSPreferencesPage_41,  
 				IHelpContextIds.PREF_SAVE_DIRTY_EDITORS, 
 	    		YES_NO_PROMPT,
-	    		new Integer [] { new Integer(ICVSUIConstants.OPTION_AUTOMATIC),	new Integer(ICVSUIConstants.OPTION_NEVER), 	new Integer(ICVSUIConstants.OPTION_PROMPT)});
+	    		new Integer [] { Integer.valueOf(ICVSUIConstants.OPTION_AUTOMATIC),	new Integer(ICVSUIConstants.OPTION_NEVER), 	new Integer(ICVSUIConstants.OPTION_PROMPT)});
 		
 	    new StringRadioButtons(
 	    		composite, 
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsTable.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsTable.java
index 2002daa..c59281e 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsTable.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsTable.java
@@ -244,7 +244,7 @@
 		final Item item = (Item) element;
 
 		if (PROPERTY_ALTERNATIVE_LIST.equals(property)) {
-			return new Integer(item.selected);
+			return Integer.valueOf(item.selected);
 		}
 		return null;
 	}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java
index b634070..ef7fa42 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java
@@ -46,13 +46,13 @@
 		for (int i = 0; i < size; i++) {
 			char ch = string.charAt(i);
 			if (ch == '.') {
-				list.add(new Integer(buffer.toString()));
+				list.add(Integer.valueOf(buffer.toString()));
 				buffer = new StringBuffer();
 			} else {
 				buffer.append(ch);
 			}
 		}
-		list.add(new Integer(buffer.toString()));
+		list.add(Integer.valueOf(buffer.toString()));
 		int[] result = new int[list.size()];
 		Iterator it = list.iterator();
 		for (int i = 0; i < result.length; i++) {
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
index 483e452..1aee0e5 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
@@ -66,7 +66,7 @@
 				return NLS.bind(CVSUIMessages.Unmanage_message, new String[] { project.getName() });  
 			}
 			else {
-				return NLS.bind(CVSUIMessages.Unmanage_messageN, new String[] { new Integer(projects.length).toString() });  
+				return NLS.bind(CVSUIMessages.Unmanage_messageN, new String[] { Integer.valueOf(projects.length).toString() });  
 			}
 		}
 		
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetActionProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetActionProvider.java
index 1db9e9e..4da8937 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetActionProvider.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetActionProvider.java
@@ -281,7 +281,7 @@
 	}
 
 	public static void setSortCriteria(ISynchronizePageConfiguration configuration, int criteria) {
-		configuration.setProperty(P_LAST_COMMENTSORT, new Integer(criteria));
+		configuration.setProperty(P_LAST_COMMENTSORT, Integer.valueOf(criteria));
 		IDialogSettings pageSettings = configuration.getSite().getPageSettings();
 		if (pageSettings != null) {
 			pageSettings.put(P_LAST_COMMENTSORT, criteria);
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/WorkspaceSubscriberContext.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/WorkspaceSubscriberContext.java
index 3c83216..33690d4 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/WorkspaceSubscriberContext.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/WorkspaceSubscriberContext.java
@@ -463,12 +463,12 @@
 			if (deltas.length == 1) {
 				return NLS.bind(CVSUIMessages.WorkspaceSubscriberContext_1, getDiffTree().getResource(deltas[0]).getFullPath());
 			}
-			return NLS.bind(CVSUIMessages.WorkspaceSubscriberContext_2, new Integer(deltas.length));
+			return NLS.bind(CVSUIMessages.WorkspaceSubscriberContext_2, Integer.valueOf(deltas.length));
 		}
 		if (deltas.length == 1) {
 			return NLS.bind(CVSUIMessages.WorkspaceSubscriberContext_3, getDiffTree().getResource(deltas[0]).getFullPath());
 		}
-		return NLS.bind(CVSUIMessages.WorkspaceSubscriberContext_4, new Integer(deltas.length));
+		return NLS.bind(CVSUIMessages.WorkspaceSubscriberContext_4, Integer.valueOf(deltas.length));
 	}
 
 	private ResourceTraversal[] getTraversals(IDiff[] deltas) {
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java
index 385026a..9d8ada5 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java
@@ -68,7 +68,7 @@
 		ICVSRemoteFolder[] remoteFolders = getRemoteFolders();
 		String localFolderName = ""; //$NON-NLS-1$
 		localFolderName = getLocalFolder().getIResource().getFullPath().toString();
-		return NLS.bind(CVSUIMessages.CheckoutIntoOperation_taskname, new String[] { new Integer(remoteFolders.length).toString(), localFolderName });  
+		return NLS.bind(CVSUIMessages.CheckoutIntoOperation_taskname, new String[] { Integer.valueOf(remoteFolders.length).toString(), localFolderName });  
 	}
 
 	/**
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java
index e838f6c..6d10866 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java
@@ -506,7 +506,7 @@
 		if (remoteFolders.length == 1) {
 			return NLS.bind(CVSUIMessages.CheckoutSingleProjectOperation_taskname, new String[] { remoteFolders[0].getName() }); 
 		} else {
-			return NLS.bind(CVSUIMessages.CheckoutMultipleProjectsOperation_taskName, new String[] { new Integer(remoteFolders.length).toString() });  
+			return NLS.bind(CVSUIMessages.CheckoutMultipleProjectsOperation_taskName, new String[] { Integer.valueOf(remoteFolders.length).toString() });  
 		}
 	}
 	
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
index dac068f..a06692d 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
@@ -85,7 +85,7 @@
 				if(roots.length == 1){
 					message = NLS.bind(CVSUIMessages.RemoveRootAction_RepositoryRemovalDialogMessageSingle, roots[0].getLocation(true)); 
 				} else {
-					message = NLS.bind(CVSUIMessages.RemoveRootAction_RepositoryRemovalDialogMessageMultiple, new Integer(roots.length));
+					message = NLS.bind(CVSUIMessages.RemoveRootAction_RepositoryRemovalDialogMessageMultiple, Integer.valueOf(roots.length));
 				}
 				proceed[0] = MessageDialog.openQuestion(shell, 
 						CVSUIMessages.RemoveRootAction_RepositoryRemovalDialogTitle, 
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareRevertOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareRevertOperation.java
index 7de9e19..ac60784 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareRevertOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareRevertOperation.java
@@ -38,7 +38,7 @@
 	 */
 	protected String getJobName() {
 		SyncInfoSet syncSet = getSyncInfoSet();
-		return NLS.bind(CVSUIMessages.CompareRevertAction_0, new String[] { new Integer(syncSet.size()).toString() }); 
+		return NLS.bind(CVSUIMessages.CompareRevertAction_0, new String[] { Integer.valueOf(syncSet.size()).toString() }); 
 
 	}
 	
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ConfirmMergedOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ConfirmMergedOperation.java
index 08dd7cd..b855b95 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ConfirmMergedOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ConfirmMergedOperation.java
@@ -40,7 +40,7 @@
 	 */
 	protected String getJobName() {
 		SyncInfoSet syncSet = getSyncInfoSet();
-		return NLS.bind(CVSUIMessages.SubscriberConfirmMergedAction_jobName, new String[] { new Integer(syncSet.size()).toString() }); 
+		return NLS.bind(CVSUIMessages.SubscriberConfirmMergedAction_jobName, new String[] { Integer.valueOf(syncSet.size()).toString() }); 
 	}
 	
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java
index 3cb30ec..4888e5b 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java
@@ -49,7 +49,7 @@
 	 */
 	protected String getJobName() {
 		SyncInfoSet syncSet = getSyncInfoSet();
-		return NLS.bind(CVSUIMessages.MergeUpdateAction_jobName, new String[] { new Integer(syncSet.size()).toString() }); 
+		return NLS.bind(CVSUIMessages.MergeUpdateAction_jobName, new String[] { Integer.valueOf(syncSet.size()).toString() }); 
 	}
 	
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java
index 477345e..b74bba9 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java
@@ -71,6 +71,6 @@
 	 */
 	protected String getJobName() {
 		SyncInfoSet syncSet = getSyncInfoSet();
-		return NLS.bind(CVSUIMessages.UpdateAction_jobName, new String[] { new Integer(syncSet.size()).toString() }); 
+		return NLS.bind(CVSUIMessages.UpdateAction_jobName, new String[] { Integer.valueOf(syncSet.size()).toString() }); 
 	}
 }
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java
index d6a7da8..d1ba7ad 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java
@@ -459,7 +459,7 @@
 	 */
 	protected String getJobName() {
 		SyncInfoSet syncSet = getSyncInfoSet();
-		return NLS.bind(CVSUIMessages.UpdateAction_jobName, new String[] { new Integer(syncSet.size()).toString() }); 
+		return NLS.bind(CVSUIMessages.UpdateAction_jobName, new String[] { Integer.valueOf(syncSet.size()).toString() }); 
 	}
 
 	/**
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java
index d1504db..6252609 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java
@@ -62,7 +62,7 @@
 	 */
 	protected String getJobName() {
 		SyncInfoSet syncSet = getSyncInfoSet();
-		return NLS.bind(CVSUIMessages.CommitAction_jobName, new String[] { new Integer(syncSet.size()).toString() }); 
+		return NLS.bind(CVSUIMessages.CommitAction_jobName, new String[] { Integer.valueOf(syncSet.size()).toString() }); 
 	}
 	
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
index 3950966..7238524 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
@@ -64,15 +64,15 @@
     public static int[] convertIncludeFlaqsToTagTypes(int includeFlags) {
         List types = new ArrayList();
         if ((includeFlags & TagSelectionArea.INCLUDE_BRANCHES) > 0)
-            types.add(new Integer(CVSTag.BRANCH));
+            types.add(Integer.valueOf(CVSTag.BRANCH));
         if ((includeFlags & TagSelectionArea.INCLUDE_VERSIONS) > 0)
-            types.add(new Integer(CVSTag.VERSION));
+            types.add(Integer.valueOf(CVSTag.VERSION));
         if ((includeFlags & (TagSelectionArea.INCLUDE_HEAD_TAG)) > 0)
-            types.add(new Integer(CVSTag.HEAD));
+            types.add(Integer.valueOf(CVSTag.HEAD));
         if ((includeFlags & (TagSelectionArea.INCLUDE_DATES)) > 0)
-            types.add(new Integer(CVSTag.DATE));
+            types.add(Integer.valueOf(CVSTag.DATE));
         if ((includeFlags & (TagSelectionArea.INCLUDE_BASE_TAG)) > 0)
-            types.add(new Integer(BASE));
+            types.add(Integer.valueOf(BASE));
         int[] result = new int[types.size()];
         for (int i = 0; i < result.length; i++) {
             result[i] = ((Integer)types.get(i)).intValue();
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSScmUrlImportWizardPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSScmUrlImportWizardPage.java
index 937db55..38af082 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSScmUrlImportWizardPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSScmUrlImportWizardPage.java
@@ -198,7 +198,7 @@
 	 * Updates the count of bundles that will be imported
 	 */
 	private void updateCount() {
-		counterLabel.setText(NLS.bind(CVSUIMessages.CVSScmUrlImportWizardPage_4, new Integer(descriptions.length)));
+		counterLabel.setText(NLS.bind(CVSUIMessages.CVSScmUrlImportWizardPage_4, Integer.valueOf(descriptions.length)));
 		counterLabel.getParent().layout();
 	}
 
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java
index f708726..061f73d 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java
@@ -354,7 +354,7 @@
 		if (isSingleFolder()) {
 			dialog.setMessage(NLS.bind(CVSUIMessages.CheckoutAsLocationSelectionPage_messageForSingle, new String[] { getSingleProject().getName() })); 
 		} else {
-			dialog.setMessage(NLS.bind(CVSUIMessages.CheckoutAsLocationSelectionPage_messageForMulti, new String[] { new Integer(remoteFolders.length).toString() })); 
+			dialog.setMessage(NLS.bind(CVSUIMessages.CheckoutAsLocationSelectionPage_messageForMulti, new String[] { Integer.valueOf(remoteFolders.length).toString() })); 
 		}
 	
 		String dirName = locationPathField.getText();
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java
index 2d63d04..5155373 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java
@@ -139,7 +139,7 @@
 	 * Create the page contents for a multiple folder checkout
 	 */
 	private void createMultipleFoldersArea(Composite composite) {
-		createLabel(composite, NLS.bind(CVSUIMessages.CheckoutAsMainPage_multipleFolders, new String[] { new Integer(folders.length).toString() })); 
+		createLabel(composite, NLS.bind(CVSUIMessages.CheckoutAsMainPage_multipleFolders, new String[] { Integer.valueOf(folders.length).toString() })); 
 		createCheckoutAsProjectRadioArea(composite);
 		createCheckoutIntoRadioArea(composite);
 		simpleProjectButton.setSelection(true);
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CommitWizardFileTypePage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CommitWizardFileTypePage.java
index 891b8e2..73a23bf 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CommitWizardFileTypePage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CommitWizardFileTypePage.java
@@ -98,7 +98,7 @@
 	    for (final Iterator iter = items.iterator(); iter.hasNext();) {
 	        final FileTypeTable.Item item= (FileTypeTable.Item)iter.next();
 	        final Map destination= item.save ? toSave : notToSave;
-	        destination.put(item.name, new Integer(item.mode));
+	        destination.put(item.name, Integer.valueOf(item.mode));
 	    }
     }
 
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModeWizardSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModeWizardSelectionPage.java
index 58ca5fc..fd59de1 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModeWizardSelectionPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModeWizardSelectionPage.java
@@ -80,7 +80,7 @@
 				final KSubstOption mode= ((ModeChange)element).getNewMode();
 				for (int i = 0; i < MODES.length; i++) {
 					if (MODES[i].equals(mode)) {
-						return new Integer(i);
+						return Integer.valueOf(i);
 					}
 				}
 			}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
index 7910f13..37d9018 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
@@ -987,7 +987,7 @@
 		String desc = convertSelection(mappings);
 		if (desc.length() > 0)
 			return shortenText(30, desc);
-		return NLS.bind(TeamUIMessages.Utils_18, new Integer(mappings.length));
+		return NLS.bind(TeamUIMessages.Utils_18, Integer.valueOf(mappings.length));
 	}
 
 	public static String convertSelection(ResourceMapping[] mappings) {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/DiffTreeChangesSection.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/DiffTreeChangesSection.java
index 69bb449..4febb3e 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/DiffTreeChangesSection.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/DiffTreeChangesSection.java
@@ -318,7 +318,7 @@
 		if (changesCount == 1) {
 			message = TeamUIMessages.DiffTreeChangesSection_8;
 		} else {
-			message = NLS.bind(TeamUIMessages.DiffTreeChangesSection_9, new Integer(changesCount));
+			message = NLS.bind(TeamUIMessages.DiffTreeChangesSection_9, Integer.valueOf(changesCount));
 		}
 		final ITeamContentProviderDescriptor[] descriptors = getEnabledContentDescriptors();
 		if (descriptors.length == 0)
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/FuzzFactorDialog.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/FuzzFactorDialog.java
index fe8c0e1..9913586 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/FuzzFactorDialog.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/FuzzFactorDialog.java
@@ -69,7 +69,7 @@
 		valueText.addModifyListener(e -> validateInput());
 		fuzzFactor = patcher.getFuzz();
 		if (fuzzFactor >= 0)
-			valueText.setText(new Integer(fuzzFactor).toString());
+			valueText.setText(Integer.valueOf(fuzzFactor).toString());
 
 		Button guessButton = new Button(composite, SWT.NONE);
 		guessButton.setText(TeamUIMessages.FuzzFactorDialog_guess);
@@ -84,7 +84,7 @@
 				patcher.setFuzz(-1);
 				int fuzz = guessFuzzFactor();
 				if (fuzz >= 0) {
-					String value = new Integer(fuzz).toString();
+					String value = Integer.valueOf(fuzz).toString();
 					valueText.setText(value);
 				}
 			}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/IgnoreLeadingPathSegmentsAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/IgnoreLeadingPathSegmentsAction.java
index d5bda68..f1865ad 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/IgnoreLeadingPathSegmentsAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/IgnoreLeadingPathSegmentsAction.java
@@ -53,7 +53,7 @@
 				Display.getCurrent().getActiveShell(),
 				TeamUIMessages.IgnoreLeadingPathSegmentsDialog_title, NLS.bind(
 						TeamUIMessages.IgnoreLeadingPathSegmentsDialog_message,
-						new Integer(maxValue)), new Integer(oldValue)
+						Integer.valueOf(maxValue)), new Integer(oldValue)
 						.toString(), new IInputValidator() {
 					@Override
 					public String isValid(String input) {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMarkAsMergedHandler.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMarkAsMergedHandler.java
index 577b92b..6c1e197 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMarkAsMergedHandler.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMarkAsMergedHandler.java
@@ -97,7 +97,7 @@
 					IDiff[] diffs = getTargetDiffs();
 					if (diffs.length == 1)
 						return TeamUIMessages.ResourceMarkAsMergedHandler_0;
-					return NLS.bind(TeamUIMessages.ResourceMarkAsMergedHandler_1, new Integer(diffs.length).toString());
+					return NLS.bind(TeamUIMessages.ResourceMarkAsMergedHandler_1, Integer.valueOf(diffs.length).toString());
 				}
 			};
 		}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMergeHandler.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMergeHandler.java
index aa02ce7..8fcd1a5 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMergeHandler.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceMergeHandler.java
@@ -81,12 +81,12 @@
 					if (overwrite) {
 						if (diffs.length == 1)
 							return TeamUIMessages.ResourceMergeHandler_0;
-						return NLS.bind(TeamUIMessages.ResourceMergeHandler_1, new Integer(diffs.length).toString());
+						return NLS.bind(TeamUIMessages.ResourceMergeHandler_1, Integer.valueOf(diffs.length).toString());
 
 					}
 					if (diffs.length == 1)
 						return TeamUIMessages.ResourceMergeHandler_2;
-					return NLS.bind(TeamUIMessages.ResourceMergeHandler_3, new Integer(diffs.length).toString());
+					return NLS.bind(TeamUIMessages.ResourceMergeHandler_3, Integer.valueOf(diffs.length).toString());
 				}
 			};
 		}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/FileTypeTable.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/FileTypeTable.java
index 06aea99..0eef4dd 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/FileTypeTable.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/FileTypeTable.java
@@ -177,13 +177,13 @@
 
         if (PROPERTY_MODE.equals(property)) {
             if (item.mode == Team.BINARY)
-                return new Integer(COMBO_INDEX_BINARY);
+                return Integer.valueOf(COMBO_INDEX_BINARY);
             if (item.mode == Team.TEXT)
-                return new Integer(COMBO_INDEX_TEXT);
+                return Integer.valueOf(COMBO_INDEX_TEXT);
         }
 
         if (fShowSaveColumn && PROPERTY_SAVE.equals(property)) {
-            return new Integer(item.save ? COMBO_INDEX_SAVE : COMBO_INDEX_DONT_SAVE);
+            return Integer.valueOf(item.save ? COMBO_INDEX_SAVE : COMBO_INDEX_DONT_SAVE);
         }
         return null;
     }
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
index 9f51467..26dccea 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
@@ -232,10 +232,10 @@
 
             if (item instanceof FileTypeTable.Extension) {
                 extensionsList.add(item.name);
-                extensionsModesList.add(new Integer(item.mode));
+                extensionsModesList.add(Integer.valueOf(item.mode));
             } else if (item instanceof FileTypeTable.Name) {
                 namesList.add(item.name);
-                namesModesList.add(new Integer(item.mode));
+                namesModesList.add(Integer.valueOf(item.mode));
             }
         }
 
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshParticipantJob.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshParticipantJob.java
index 46eccec..ad38e10 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshParticipantJob.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshParticipantJob.java
@@ -423,9 +423,9 @@
 			} else {
 				// Refreshed resources contain changes
 				if (numChanges == 1) {
-					text.append(NLS.bind(TeamUIMessages.RefreshCompleteDialog_changesSingular, (new Object[]{getName(), new Integer(numChanges), numIncomingChanges, sep, numOutgoingChanges})));
+					text.append(NLS.bind(TeamUIMessages.RefreshCompleteDialog_changesSingular, (new Object[]{getName(), Integer.valueOf(numChanges), numIncomingChanges, sep, numOutgoingChanges})));
 				} else {
-					text.append(NLS.bind(TeamUIMessages.RefreshCompleteDialog_changesPlural, (new Object[]{getName(), new Integer(numChanges), numIncomingChanges, sep, numOutgoingChanges})));
+					text.append(NLS.bind(TeamUIMessages.RefreshCompleteDialog_changesPlural, (new Object[]{getName(), Integer.valueOf(numChanges), numIncomingChanges, sep, numOutgoingChanges})));
 				}
 			}
 		} else {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizePageConfiguration.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizePageConfiguration.java
index bc2d8b8..b21e1d2 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizePageConfiguration.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizePageConfiguration.java
@@ -486,7 +486,7 @@
 	@Override
 	public void setMode(int mode) {
 		if (isModeSupported(mode))
-			setProperty(P_MODE, new Integer(mode));
+			setProperty(P_MODE, Integer.valueOf(mode));
 	}
 
 	public boolean isModeSupported(int mode) {
@@ -504,7 +504,7 @@
 
 	@Override
 	public void setSupportedModes(int modes) {
-		setProperty(P_SUPPORTED_MODES, new Integer(modes));
+		setProperty(P_SUPPORTED_MODES, Integer.valueOf(modes));
 	}
 
 	/**
@@ -537,7 +537,7 @@
 	 * @param style
 	 */
 	public void setViewerStyle(int style) {
-		setProperty(P_VIEWER_STYLE, new Integer(style));
+		setProperty(P_VIEWER_STYLE, Integer.valueOf(style));
 	}
 
 	@Override
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/StatusLineContributionGroup.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/StatusLineContributionGroup.java
index 43dadfb..5e13a57 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/StatusLineContributionGroup.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/StatusLineContributionGroup.java
@@ -83,9 +83,9 @@
 
 		TeamUIPlugin.getStandardDisplay().asyncExec(() -> {
 			if (isThreeWay()) {
-				conflicting.setText(new Integer(workspaceConflicting).toString());
-				incoming.setText(new Integer(workspaceIncoming).toString());
-				outgoing.setText(new Integer(workspaceOutgoing).toString());
+				conflicting.setText(Integer.valueOf(workspaceConflicting).toString());
+				incoming.setText(Integer.valueOf(workspaceIncoming).toString());
+				outgoing.setText(Integer.valueOf(workspaceOutgoing).toString());
 
 				conflicting.setTooltip(NLS.bind(TeamUIMessages.StatisticsPanel_numbersTooltip, new String[] { TeamUIMessages.StatisticsPanel_conflicting }));
 				outgoing.setTooltip(NLS.bind(TeamUIMessages.StatisticsPanel_numbersTooltip, new String[] { TeamUIMessages.StatisticsPanel_outgoing }));
diff --git a/examples/org.eclipse.compare.examples.xml/META-INF/MANIFEST.MF b/examples/org.eclipse.compare.examples.xml/META-INF/MANIFEST.MF
index 536dad5..482e75e 100644
--- a/examples/org.eclipse.compare.examples.xml/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.compare.examples.xml/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.compare.examples.xml; singleton:=true
-Bundle-Version: 3.4.100.qualifier
+Bundle-Version: 3.4.200.qualifier
 Bundle-Activator: org.eclipse.compare.examples.xml.XMLPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/examples/org.eclipse.compare.examples.xml/pom.xml b/examples/org.eclipse.compare.examples.xml/pom.xml
index 5853433..ef4a0f3 100644
--- a/examples/org.eclipse.compare.examples.xml/pom.xml
+++ b/examples/org.eclipse.compare.examples.xml/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.compare</groupId>
   <artifactId>org.eclipse.compare.examples.xml</artifactId>
-  <version>3.4.100-SNAPSHOT</version>
+  <version>3.4.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLCompareEditMappingDialog.java b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLCompareEditMappingDialog.java
index c1bcc67..bff22f0 100644
--- a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLCompareEditMappingDialog.java
+++ b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLCompareEditMappingDialog.java
@@ -175,7 +175,7 @@
 		fMapping.setSignature(fSignatureText.getText());
 		String idtext= fIdAttributeText.getText();
 		if (fIdTypeChildBodyButton.getSelection()) {
-			idtext= new Character(XMLStructureCreator.ID_TYPE_BODY) + idtext;
+			idtext= Character.valueOf(XMLStructureCreator.ID_TYPE_BODY) + idtext;
 		}
 		fMapping.setIdAttribute(idtext);
 		super.okPressed();
diff --git a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLPlugin.java b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLPlugin.java
index 23f8e93..f941cfa 100644
--- a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLPlugin.java
+++ b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLPlugin.java
@@ -174,7 +174,7 @@
 		
 		fOrderedElements= new HashMap();
 		String OrderedPrefValue= fPrefStore.getString(ORDERED_PREFERENCE_NAME);
-		StringTokenizer orderedTokens= new StringTokenizer(OrderedPrefValue, (new Character(ORDERED_FIELDS_SEPARATOR)).toString());
+		StringTokenizer orderedTokens= new StringTokenizer(OrderedPrefValue, (Character.valueOf(ORDERED_FIELDS_SEPARATOR)).toString());
 		while (orderedTokens.hasMoreTokens()) {
 			String IdMapName= orderedTokens.nextToken();
 			String signature= orderedTokens.nextToken();
@@ -309,7 +309,7 @@
 					if (signature != null && !signature.equals("") //$NON-NLS-1$
 						&& attribute != null && !attribute.equals("")) { //$NON-NLS-1$
 						if (idsource != null && idsource.equals(MAPPING_ID_SOURCE_BODY))
-							bodyid= (new Character(XMLStructureCreator.ID_TYPE_BODY)).toString();
+							bodyid= (Character.valueOf(XMLStructureCreator.ID_TYPE_BODY)).toString();
 						idmapHM.put(XMLStructureCreator.ROOT_ID	+ XMLStructureCreator.SIGN_SEPARATOR
 								+ signature	+ XMLStructureCreator.SIGN_SEPARATOR, bodyid + attribute);
 					}
diff --git a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureCreator.java b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureCreator.java
index 3f8141a..d02e991 100644
--- a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureCreator.java
+++ b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureCreator.java
@@ -159,15 +159,15 @@
 
                 if (isUseIdMap() && idMap.containsKey(fsignature)) {
                     String attrName= (String) idMap.get(fsignature);
-                    elementId= raw + new Character(ID_SEPARATOR) + attrs.getValue(attrName);
+                    elementId= raw + Character.valueOf(ID_SEPARATOR) + attrs.getValue(attrName);
                     elementName= raw + " [" + attrName + "=" + attrs.getValue(attrName) + "]"; //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$
                 } else {
                     if (!currentParent.childElements.containsKey(raw)) {
-                        currentParent.childElements.put(raw, new Integer(1));
+                        currentParent.childElements.put(raw, Integer.valueOf(1));
                     } else {
-                        currentParent.childElements.put(raw, new Integer(((Integer) currentParent.childElements.get(raw)).intValue() + 1));
+                        currentParent.childElements.put(raw, Integer.valueOf(((Integer) currentParent.childElements.get(raw)).intValue() + 1));
                     }
-                    elementId= raw + new Character(ID_SEPARATOR) + "[" + currentParent.childElements.get(raw) + "]"; //$NON-NLS-2$ //$NON-NLS-1$
+                    elementId= raw + Character.valueOf(ID_SEPARATOR) + "[" + currentParent.childElements.get(raw) + "]"; //$NON-NLS-2$ //$NON-NLS-1$
                     elementName= MessageFormat.format("{0} [{1}]", raw, currentParent.childElements.get(raw).toString()); //$NON-NLS-1$
                 }
                 int start= r.getOffset() + prevlocator.getColumnNumber() - 1;
diff --git a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java
index 8ea560c..cf3613f 100644
--- a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java
+++ b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java
@@ -316,7 +316,7 @@
 								idname.indexOf(
 									XMLStructureCreator.ID_SEPARATOR));
 						idname=
-							new Character(XMLStructureCreator.ID_TYPE_BODY)
+							Character.valueOf(XMLStructureCreator.ID_TYPE_BODY)
 								+ idname;
 					}
 					if (idmapHM.containsKey(signature)) {
@@ -451,7 +451,7 @@
 							0,
 							idname.indexOf(XMLStructureCreator.ID_SEPARATOR));
 					idname=
-						new Character(XMLStructureCreator.ID_TYPE_BODY)
+						Character.valueOf(XMLStructureCreator.ID_TYPE_BODY)
 							+ idname;
 					idmapHM.put(signature, idname);
 					XMLPlugin.getDefault().setIdMaps(
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/StreamUtil.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/StreamUtil.java
index bf9620d..2fb9b20 100644
--- a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/StreamUtil.java
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/StreamUtil.java
@@ -29,7 +29,7 @@
 		throws IOException {
 
 		// Only show progress for files larger than 25Kb.
-		Long kilobytesEstimate = new Long(sizeEstimate / 1024);
+		Long kilobytesEstimate = Long.valueOf(sizeEstimate / 1024);
 		boolean showProgress = (progress != null) && (sizeEstimate > 25000);
 		long bytesCopied = 0;
 
@@ -46,7 +46,7 @@
 					progress.subTask(
 						Policy.bind(
 							"filetransfer.monitor", //$NON-NLS-1$
-							new Object[] { title, new Long(bytesCopied / 1024), kilobytesEstimate }));
+							new Object[] { title, Long.valueOf(bytesCopied / 1024), kilobytesEstimate }));
 				}
 
 				// Read the next chunk.
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/pessimistic/PessimisticModificationValidator.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/pessimistic/PessimisticModificationValidator.java
index 41fc1ca..ecd91be 100644
--- a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/pessimistic/PessimisticModificationValidator.java
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/pessimistic/PessimisticModificationValidator.java
@@ -313,7 +313,7 @@
 	 * Convenience method to set the validate edit status for the given resource.
 	 */
 	private static void setValidateEditStatus(Map map, IFile resource, int status) {
-		map.put(resource, new Integer(status));
+		map.put(resource, Integer.valueOf(status));
 	}
 	
 	/*
diff --git a/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java b/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java
index 7097ae6..9cd4cfd 100644
--- a/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java
+++ b/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java
@@ -421,21 +421,21 @@
 							Object otherContributor = lineComparison
 									.get(OTHER_CONTRIBUTOR);
 
-							if (thisContributor.equals(new Character('L'))) {
+							if (thisContributor.equals(Character.valueOf('L'))) {
 								assertEquals(thisLine, leftString);
 								assertEquals(otherContributor, new Character(
 										'R'));
 								assertEquals(otherLine, rightString);
 							} else {
 								assertEquals(thisContributor,
-										new Character('R'));
+										Character.valueOf('R'));
 								assertEquals(thisLine, rightString);
 								assertEquals(otherContributor, new Character(
 										'L'));
 								assertEquals(otherLine, leftString);
 							}
 
-							if (thisContributor.equals(new Character('L')))
+							if (thisContributor.equals(Character.valueOf('L')))
 								return new IRegion[] { new Region(0, 1),
 										new Region(1, 1) };
 
diff --git a/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Performance - All Tests.launch b/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Performance - All Tests.launch
index c37a018..ac89dc2 100644
--- a/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Performance - All Tests.launch
+++ b/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Performance - All Tests.launch
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
 <booleanAttribute key="askclear" value="false"/>
 <booleanAttribute key="automaticAdd" value="true"/>
@@ -25,6 +25,8 @@
 <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
 <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
 <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.team.tests.ccvs.ui.benchmark.AllBenchmarkTests"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os win32 -ws win32 -arch x86 -nl en_US -clean"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.team.tests.cvs.core"/>
@@ -32,7 +34,10 @@
 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.cvs.properties=c:\eclipse\repository.properties -DInternalPrintPerformanceResults  -Declipse.cvs.recordProtocolTraffic=false"/>
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
 <booleanAttribute key="useDefaultConfig" value="true"/>
 <booleanAttribute key="useDefaultConfigArea" value="true"/>
 <booleanAttribute key="useProduct" value="false"/>
diff --git a/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Test using Ant application.launch b/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Test using Ant application.launch
index c60a862..697068a 100644
--- a/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Test using Ant application.launch
+++ b/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/Test using Ant application.launch
@@ -1,151 +1,157 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="usefeatures" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<booleanAttribute key="useProduct" value="false"/>
-<booleanAttribute key="tracing" value="false"/>
-<stringAttribute key="vminstall" value="ibm1.4.2"/>
-<stringAttribute key="location2" value="D:\dev\test-workspace-3"/>
+<stringAttribute key="application" value="org.eclipse.ant.core.antRunner"/>
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="true"/>
 <booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Test using Ant application"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="C:\eclipse\test-workspace"/>
+<stringAttribute key="location1" value="C:\eclipse\test-workspace"/>
+<stringAttribute key="location2" value="D:\dev\test-workspace-3"/>
+<stringAttribute key="location3" value="D:\dev\test-workspace-2"/>
+<stringAttribute key="location4" value="D:\dev\runtime-workspace"/>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.debug.ui.javaSourceLocator"/>
+<stringAttribute key="org.eclipse.debug.ui.target_debug_perspective" value="perspective_default"/>
+<stringAttribute key="org.eclipse.debug.ui.target_run_perspective" value="perspective_default"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os win32 -ws win32 -arch x86 -nl en_US -className  org.eclipse.team.tests.ccvs.core.provider.AllTestProvider -testPluginName org.eclipse.team.tests.cvs.core -noupdate formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,cvstest.xml"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.cvs.propertiesC:\eclipse\repository.properties"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="showSplash" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
 <mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.boot/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.boot/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/snapshots" value="false"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/loader" value="*"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/actions" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/timing/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/resource" value="*"/>
-<mapEntry key="org.eclipse.team.ftp/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.boot/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/list" value="true"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/activateplugin" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.core.resources/monitor/builders" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.help/debug/search" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/requests" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/workbench.restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/monitor/listeners" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/part.create" value="false"/>
-<mapEntry key="org.eclipse.ant.core/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes" value="false"/>
-<mapEntry key="org.eclipse.core.boot/trace/pluginActivation" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/native" value="*"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/properties" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/create" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/ieadapter" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/responses" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes/success" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.core.boot/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.core.boot/monitor/plugins" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/workbench.start" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/dump" value=""/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/timing/startup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/resolve" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/failure" value="false"/>
-<mapEntry key="org.eclipse.core.boot/monitor/bundles" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sharedworkingcopy" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
 <mapEntry key="org.eclipse.ant.core/buildfile/timing" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.debug.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/perspective" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/part.activate" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/ieadapter/inprocess" value="false"/>
+<mapEntry key="org.eclipse.ant.core/debug" value="true"/>
+<mapEntry key="org.eclipse.core.boot/monitor/bundles" value="false"/>
+<mapEntry key="org.eclipse.core.boot/monitor/classes" value="false"/>
+<mapEntry key="org.eclipse.core.boot/monitor/plugins" value="false"/>
+<mapEntry key="org.eclipse.core.boot/trace/classLoading" value="false"/>
+<mapEntry key="org.eclipse.core.boot/trace/filename" value="runtime.traces"/>
+<mapEntry key="org.eclipse.core.boot/trace/filters" value="trace.properties"/>
+<mapEntry key="org.eclipse.core.boot/trace/pluginActivation" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
 <mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.jface/trace/actions" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
+<mapEntry key="org.eclipse.core.resources/history" value="false"/>
+<mapEntry key="org.eclipse.core.resources/monitor/builders" value="false"/>
+<mapEntry key="org.eclipse.core.resources/monitor/listeners" value="false"/>
+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/snapshots" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
 <mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
 <mapEntry key="org.eclipse.core.runtime/config/debug" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.debug/debug" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
 <mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/part.listeners" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/success" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/actions" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/activateplugin" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/create" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/failure" value="false"/>
 <mapEntry key="org.eclipse.core.runtime/loader/debug/filter/class" value="*"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/debug" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/loader" value="*"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/native" value="*"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/resource" value="*"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes" value="false"/>
 <mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes/failure" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes/success" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/properties" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/loader/debug/success" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/preferences/debug" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/registry/debug" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/registry/debug/dump" value=""/>
+<mapEntry key="org.eclipse.core.runtime/registry/debug/resolve" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/timing/shutdown" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/timing/startup" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
+<mapEntry key="org.eclipse.debug.core/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.help.ui/debug/ieadapter" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug/ieadapter/inprocess" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
+<mapEntry key="org.eclipse.help/debug" value="true"/>
+<mapEntry key="org.eclipse.help/debug/context" value="false"/>
+<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
+<mapEntry key="org.eclipse.help/debug/search" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/sharedworkingcopy" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
+<mapEntry key="org.eclipse.jdt.debug.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.debug/debug" value="true"/>
+<mapEntry key="org.eclipse.jface/trace/actions" value="false"/>
+<mapEntry key="org.eclipse.team.core/debug" value="false"/>
+<mapEntry key="org.eclipse.team.core/streams" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/debug" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
+<mapEntry key="org.eclipse.team.ftp/debug" value="false"/>
+<mapEntry key="org.eclipse.team.ftp/list" value="true"/>
+<mapEntry key="org.eclipse.team.ftp/requests" value="true"/>
+<mapEntry key="org.eclipse.team.ftp/responses" value="true"/>
+<mapEntry key="org.eclipse.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/debug/internalerror/openDialog" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/part.activate" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/part.create" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/part.listeners" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/perspective" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/workbench.restore" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/workbench.start" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug" value="true"/>
+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
 </mapAttribute>
-<stringAttribute key="org.eclipse.debug.ui.target_run_perspective" value="perspective_default"/>
-<stringAttribute key="location3" value="D:\dev\test-workspace-2"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="showSplash" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-TestusingAntapplication"/>
-<stringAttribute key="location4" value="D:\dev\runtime-workspace"/>
-<stringAttribute key="configLocation" value=""/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.debug.ui.javaSourceLocator"/>
-<stringAttribute key="application" value="org.eclipse.ant.core.antRunner"/>
-<booleanAttribute key="clearws" value="true"/>
-<stringAttribute key="location1" value="C:\eclipse\test-workspace"/>
-<stringAttribute key="vmargs" value="-Declipse.cvs.propertiesC:\eclipse\repository.properties"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="progargs" value="-os win32 -ws win32 -arch x86 -nl en_US -className  org.eclipse.team.tests.ccvs.core.provider.AllTestProvider -testPluginName org.eclipse.team.tests.cvs.core -noupdate formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,cvstest.xml"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
 <booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="askclear" value="true"/>
-<stringAttribute key="org.eclipse.debug.ui.target_debug_perspective" value="perspective_default"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location0" value="C:\eclipse\test-workspace"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="false"/>
+<booleanAttribute key="usefeatures" value="false"/>
+<stringAttribute key="vminstall" value="ibm1.4.2"/>
 </launchConfiguration>
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PatchWizardRadioButtonGroupTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PatchWizardRadioButtonGroupTests.java
index ebd5b2b..f79cbcf 100644
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PatchWizardRadioButtonGroupTests.java
+++ b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PatchWizardRadioButtonGroupTests.java
@@ -272,7 +272,7 @@
 				Method method = clazz.getMethod("add", partypes);
 				method.setAccessible(true);
 				Object arglist[] = new Object[2];
-				arglist[0] = new Integer(buttonCode);
+				arglist[0] = Integer.valueOf(buttonCode);
 				arglist[1] = button;
 				method.invoke(groupObject, arglist);
 			} catch (SecurityException e) {
@@ -344,7 +344,7 @@
 				Object arglist[] = new Object[3];
 				arglist[0] = Boolean.valueOf(enabled);
 				arglist[1] = buttonsToChange;
-				arglist[2] = new Integer(defaultSelection);
+				arglist[2] = Integer.valueOf(defaultSelection);
 				method.invoke(groupObject, arglist);
 			} catch (SecurityException e) {
 				fail(e.getMessage());
