### Question:
Cloneables { @Nonnull public static <T extends JCloneable<T>> List<T> cloneList(@Nonnull List<T> source) { return deepListCloning(source, new ArrayList<T>(source.size())); } protected  Cloneables(); @Nonnull static List<T> cloneList(@Nonnull List<T> source); @Nonnull static List<T> cloneList(@Nonnull List<T> source,
															  @Nonnull List<T> destination); @Nonnull static List<T> deepListCloning(@Nonnull List<T> source); @Nonnull static List<T> deepListCloning(@Nonnull List<T> source,
																	@Nonnull List<T> destination); @Nonnull static Map<K, V> cloneMap(@Nonnull Map<K, V> source); @Nonnull static Map<K, V> cloneMap(@Nonnull Map<K, V> source, @Nonnull Map<K, V> destination); @Nonnull static Map<K, V> cloneMapWithKeys(@Nonnull Map<K, V> source); static T[] deepClone(@Nonnull T[] array); @Deprecated @Nonnull static T[] deepArrayCloning(@Nonnull T[] array);  }### Answer:
@Test public void testCloneList() throws Exception { final List<Interval<Integer>> intervals = new ArrayList<Interval<Integer>>(); intervals.add(Intervals.newClosedInterval(10, 20)); intervals.add(Intervals.newClosedInterval(-10, 20)); intervals.add(Intervals.newClosedInterval(10, 520)); final List<Interval<Integer>> intervalsCopy = Cloneables.cloneList(intervals); Assert.assertTrue(intervalsCopy.size() == intervals.size()); Assert.assertTrue(Objects.areEqual(intervals, intervalsCopy, ListEqualizer.<Interval<Integer>>newWithNaturalEquals(true))); Assert.assertFalse(Objects.areEqual(intervals, intervalsCopy, ListEqualizer.newWithNestedEqualizer(true, SameEqualizer.<Interval<Integer>>getInstance()))); }