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 8859663..9133bc5 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
@@ -78,7 +78,7 @@
 		valueText.addModifyListener(e -> validateInput());
 		fuzzFactor = patcher.getFuzz();
 		if (fuzzFactor >= 0)
-			valueText.setText(Integer.valueOf(fuzzFactor).toString());
+			valueText.setText(Integer.toString(fuzzFactor));
 
 		Button guessButton = new Button(composite, SWT.NONE);
 		guessButton.setText(TeamUIMessages.FuzzFactorDialog_guess);
@@ -93,7 +93,7 @@
 				patcher.setFuzz(-1);
 				int fuzz = guessFuzzFactor();
 				if (fuzz >= 0) {
-					String value = Integer.valueOf(fuzz).toString();
+					String value = Integer.toString(fuzz);
 					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 7d9e458..b26d787 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
@@ -56,7 +56,7 @@
 		InputDialog dlg = new InputDialog(Display.getCurrent().getActiveShell(),
 				TeamUIMessages.IgnoreLeadingPathSegmentsDialog_title,
 				NLS.bind(TeamUIMessages.IgnoreLeadingPathSegmentsDialog_message, Integer.valueOf(maxValue)),
-				Integer.valueOf(oldValue).toString(), input -> {
+				Integer.toString(oldValue), input -> {
 					try {
 						int i = Integer.parseInt(input);
 						if (i < 0 || i > maxValue)
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 4992925..5359ffe 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
@@ -101,7 +101,7 @@
 					IDiff[] diffs = getTargetDiffs();
 					if (diffs.length == 1)
 						return TeamUIMessages.ResourceMarkAsMergedHandler_0;
-					return NLS.bind(TeamUIMessages.ResourceMarkAsMergedHandler_1, Integer.valueOf(diffs.length).toString());
+					return NLS.bind(TeamUIMessages.ResourceMarkAsMergedHandler_1, Integer.toString(diffs.length));
 				}
 			};
 		}
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 9c2e127..abebccc 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
@@ -88,12 +88,12 @@
 					if (overwrite) {
 						if (diffs.length == 1)
 							return TeamUIMessages.ResourceMergeHandler_0;
-						return NLS.bind(TeamUIMessages.ResourceMergeHandler_1, Integer.valueOf(diffs.length).toString());
+						return NLS.bind(TeamUIMessages.ResourceMergeHandler_1, Integer.toString(diffs.length));
 
 					}
 					if (diffs.length == 1)
 						return TeamUIMessages.ResourceMergeHandler_2;
-					return NLS.bind(TeamUIMessages.ResourceMergeHandler_3, Integer.valueOf(diffs.length).toString());
+					return NLS.bind(TeamUIMessages.ResourceMergeHandler_3, Integer.toString(diffs.length));
 				}
 			};
 		}
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 38cb6b3..b424ac8 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
@@ -88,9 +88,9 @@
 
 		TeamUIPlugin.getStandardDisplay().asyncExec(() -> {
 			if (isThreeWay()) {
-				conflicting.setText(Integer.valueOf(workspaceConflicting).toString());
-				incoming.setText(Integer.valueOf(workspaceIncoming).toString());
-				outgoing.setText(Integer.valueOf(workspaceOutgoing).toString());
+				conflicting.setText(Integer.toString(workspaceConflicting));
+				incoming.setText(Integer.toString(workspaceIncoming));
+				outgoing.setText(Integer.toString(workspaceOutgoing));
 
 				conflicting.setTooltip(NLS.bind(TeamUIMessages.StatisticsPanel_numbersTooltip, new String[] { TeamUIMessages.StatisticsPanel_conflicting }));
 				outgoing.setTooltip(NLS.bind(TeamUIMessages.StatisticsPanel_numbersTooltip, new String[] { TeamUIMessages.StatisticsPanel_outgoing }));
