Create a util package for related classes

Change-Id: I78379980cc6d98113a23505f30eba33f2880c761
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/PredicateCache.java b/src/main/java/com/googlesource/gerrit/plugins/task/PredicateCache.java
index e305d79..3c79982 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/PredicateCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/PredicateCache.java
@@ -33,6 +33,7 @@
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.task.statistics.HitHashMap;
 import com.googlesource.gerrit.plugins.task.statistics.StopWatch;
+import com.googlesource.gerrit.plugins.task.util.ThrowingProvider;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java b/src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java
index 33ac745..0c3136e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java
@@ -17,6 +17,7 @@
 import com.google.gerrit.common.Container;
 import com.google.gerrit.entities.BranchNameKey;
 import com.google.gerrit.server.git.meta.AbstractVersionedMetaData;
+import com.googlesource.gerrit.plugins.task.util.Copier;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitBooleanTable.java b/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitBooleanTable.java
index 480551c..2f35084 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitBooleanTable.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitBooleanTable.java
@@ -15,7 +15,7 @@
 package com.googlesource.gerrit.plugins.task.statistics;
 
 import com.google.gerrit.common.BooleanTable;
-import com.googlesource.gerrit.plugins.task.TopKeyMap;
+import com.googlesource.gerrit.plugins.task.util.TopKeyMap;
 
 /**
  * A space efficient Table for Booleans. This Table takes advantage of the fact that the values
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitHashMap.java b/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitHashMap.java
index 11ecaea..ccb12a9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitHashMap.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/statistics/HitHashMap.java
@@ -16,7 +16,7 @@
 
 import static java.util.stream.Collectors.toList;
 
-import com.googlesource.gerrit.plugins.task.TopKeyMap;
+import com.googlesource.gerrit.plugins.task.util.TopKeyMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/statistics/StopWatch.java b/src/main/java/com/googlesource/gerrit/plugins/task/statistics/StopWatch.java
index 52dd24d..05f942b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/statistics/StopWatch.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/statistics/StopWatch.java
@@ -15,7 +15,7 @@
 package com.googlesource.gerrit.plugins.task.statistics;
 
 import com.google.common.base.Stopwatch;
-import com.googlesource.gerrit.plugins.task.SamTryWrapper;
+import com.googlesource.gerrit.plugins.task.util.SamTryWrapper;
 import java.util.concurrent.TimeUnit;
 import java.util.function.LongConsumer;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/Copier.java b/src/main/java/com/googlesource/gerrit/plugins/task/util/Copier.java
similarity index 93%
rename from src/main/java/com/googlesource/gerrit/plugins/task/Copier.java
rename to src/main/java/com/googlesource/gerrit/plugins/task/util/Copier.java
index 10f4048..434a4de 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/Copier.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/util/Copier.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.task;
+package com.googlesource.gerrit.plugins.task.util;
 
 import java.lang.reflect.Field;
 
 public class Copier {
-  protected static <T> void shallowCopyDeclaredFields(
+  public static <T> void shallowCopyDeclaredFields(
       Class<T> cls, T from, T to, boolean includeInaccessible) {
     for (Field field : cls.getDeclaredFields()) {
       try {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/SamTryWrapper.java b/src/main/java/com/googlesource/gerrit/plugins/task/util/SamTryWrapper.java
similarity index 97%
rename from src/main/java/com/googlesource/gerrit/plugins/task/SamTryWrapper.java
rename to src/main/java/com/googlesource/gerrit/plugins/task/util/SamTryWrapper.java
index 39679ff..ef42e5a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/SamTryWrapper.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/util/SamTryWrapper.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.task;
+package com.googlesource.gerrit.plugins.task.util;
 
 import java.util.function.BiConsumer;
 import java.util.function.BiFunction;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/ThrowingProvider.java b/src/main/java/com/googlesource/gerrit/plugins/task/util/ThrowingProvider.java
similarity index 95%
rename from src/main/java/com/googlesource/gerrit/plugins/task/ThrowingProvider.java
rename to src/main/java/com/googlesource/gerrit/plugins/task/util/ThrowingProvider.java
index 7644143..3d5197e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/ThrowingProvider.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/util/ThrowingProvider.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.task;
+package com.googlesource.gerrit.plugins.task.util;
 
 public interface ThrowingProvider<V, E extends Exception> {
   public V get() throws E;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/TopKeyMap.java b/src/main/java/com/googlesource/gerrit/plugins/task/util/TopKeyMap.java
similarity index 98%
rename from src/main/java/com/googlesource/gerrit/plugins/task/TopKeyMap.java
rename to src/main/java/com/googlesource/gerrit/plugins/task/util/TopKeyMap.java
index d4b7987..a6627fb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/TopKeyMap.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/util/TopKeyMap.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.task;
+package com.googlesource.gerrit.plugins.task.util;
 
 /**
  * A TopKeyMap is a lightweight limited size (default 5) map with 'long' keys designed to store only