InMemoryRepository: Use a real Builder class

Change-Id: I161b98a58503415955a21f2720395611f439ce98
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
index 965aa8d..ae05536 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
@@ -34,6 +34,15 @@
  * is garbage collected. Closing the repository has no impact on its memory.
  */
 public class InMemoryRepository extends DfsRepository {
+	/** Builder for in-memory repositories. */
+	public static class Builder
+			extends DfsRepositoryBuilder<Builder, InMemoryRepository> {
+		@Override
+		public InMemoryRepository build() throws IOException {
+			return new InMemoryRepository(this);
+		}
+	}
+
 	private static final AtomicInteger packId = new AtomicInteger();
 
 	private final DfsObjDatabase objdb;
@@ -48,13 +57,11 @@ public class InMemoryRepository extends DfsRepository {
 	 * @since 2.0
 	 */
 	public InMemoryRepository(DfsRepositoryDescription repoDesc) {
-		super(new DfsRepositoryBuilder<DfsRepositoryBuilder, InMemoryRepository>() {
-			@Override
-			public InMemoryRepository build() throws IOException {
-				throw new UnsupportedOperationException();
-			}
-		}.setRepositoryDescription(repoDesc));
+		this(new Builder().setRepositoryDescription(repoDesc));
+	}
 
+	private InMemoryRepository(Builder builder) {
+		super(builder);
 		objdb = new MemObjDatabase(this);
 		refdb = new MemRefDatabase();
 	}