+ // copied object is the same as original
+ assertTrue(new ReflectionEquals(averagingProgressTracker).matches(copyAverageProgressTracker));
+
+ // afterwards work of copied tracker is independent
+ averagingProgressTracker.openTask(ticker.read());
+
+ final long time = ticker.read();
+ assertNotEquals("Trackers are expected to return different results for tracking",
+ averagingProgressTracker.openTask(time), copyAverageProgressTracker.openTask(time));
+ assertNotEquals("Trackers are expected to encounter different amount of tasks",
+ averagingProgressTracker.tasksEncountered(), copyAverageProgressTracker.tasksEncountered());
+
+ // and copied object is then no more the same as original
+ assertFalse(new ReflectionEquals(averagingProgressTracker).matches(copyAverageProgressTracker));
+ }