diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
index 4538ce2..ea6bd3a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -119,14 +119,6 @@
  * Implements the server side of a fetch connection, transmitting objects.
  */
 public class UploadPack {
-	// UploadPack sends these lines as the first response to a client that
-	// supports protocol version 2.
-	private static final String[] v2CapabilityAdvertisement = {
-		"version 2", //$NON-NLS-1$
-		COMMAND_LS_REFS,
-		COMMAND_FETCH + '=' + OPTION_SHALLOW
-	};
-
 	/** Policy the server uses to validate client requests */
 	public static enum RequestPolicy {
 		/** Client may only ask for objects the server advertised a reference for. */
@@ -1117,13 +1109,21 @@
 				.format(JGitText.get().unknownTransportCommand, command));
 	}
 
+	private List<String> getV2CapabilityAdvertisement() {
+		ArrayList<String> caps = new ArrayList<>();
+		caps.add("version 2"); //$NON-NLS-1$
+		caps.add(COMMAND_LS_REFS);
+		caps.add(COMMAND_FETCH + '=' + OPTION_SHALLOW);
+		return caps;
+	}
+
 	private void serviceV2() throws IOException {
 		if (biDirectionalPipe) {
 			// Just like in service(), the capability advertisement
 			// is sent only if this is a bidirectional pipe. (If
 			// not, the client is expected to call
 			// sendAdvertisedRefs() on its own.)
-			for (String s : v2CapabilityAdvertisement) {
+			for (String s : getV2CapabilityAdvertisement()) {
 				pckOut.writeString(s + "\n"); //$NON-NLS-1$
 			}
 			pckOut.end();
@@ -1287,7 +1287,7 @@
 		if (useProtocolV2()) {
 			// The equivalent in v2 is only the capabilities
 			// advertisement.
-			for (String s : v2CapabilityAdvertisement) {
+			for (String s : getV2CapabilityAdvertisement()) {
 				adv.writeOne(s);
 			}
 			adv.end();
