// Path: src/main/java/com/lassekoskela/time/Clock.java
// public class Clock {
// 	private static TimeSource timesource = new SystemClock();
// 
// 	public static long now() {
// 		return timesource.now();
// 	}
// 
// 	public static void freeze() {
// 		FakeClock fakeClock = new FakeClock(now());
// 		timesource = fakeClock;
// 	}
// 
// 	public static void advance(long milliseconds) {
// 		timesource.advance(milliseconds);
// 	}
// 
// 	public static void reset() {
// 		timesource = new SystemClock();
// 	}
// 
// 	private static abstract class TimeSource {
// 		public abstract long now();
// 
// 		public void advance(long milliseconds)
// 				throws UnsupportedOperationException {
// 			String msg = "Advancing time is not supported by "
// 					+ getClass().getName();
// 			throw new UnsupportedOperationException(msg);
// 		}
// 	}
// 
// 	private static class SystemClock extends TimeSource {
// 		@Override
// 		public long now() {
// 			return System.currentTimeMillis();
// 		}
// 	}
// 
// 	private static class FakeClock extends TimeSource {
// 		private long now;
// 
// 		public FakeClock(long now) {
// 			this.now = now;
// 		}
// 
// 		@Override
// 		public long now() {
// 			return now;
// 		}
// 
// 		public void advance(long milliseconds)
// 				throws UnsupportedOperationException {
// 			now += milliseconds;
// 		}
// 	}
// }


import static java.lang.String.format;
import static java.util.Arrays.asList;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.junit.After;
import org.junit.Before;
import com.lassekoskela.time.Clock;
package com.lassekoskela.maven.buildevents;




public abstract class AbstractBuildEventLogReportTest {

	protected static Matcher<String> containsInOrder(final String... strings) {
		return new BaseMatcher<String>() {

			@Override
			public boolean matches(Object candidate) {
				if (candidate == null
						|| !candidate.getClass().equals(String.class)) {
// Path: src/main/java/com/lassekoskela/time/Clock.java
// public class Clock {
// 	private static TimeSource timesource = new SystemClock();
// 
// 	public static long now() {
// 		return timesource.now();
// 	}
// 
// 	public static void freeze() {
// 		FakeClock fakeClock = new FakeClock(now());
// 		timesource = fakeClock;
// 	}
// 
// 	public static void advance(long milliseconds) {
// 		timesource.advance(milliseconds);
// 	}
// 
// 	public static void reset() {
// 		timesource = new SystemClock();
// 	}
// 
// 	private static abstract class TimeSource {
// 		public abstract long now();
// 
// 		public void advance(long milliseconds)
// 				throws UnsupportedOperationException {
// 			String msg = "Advancing time is not supported by "
// 					+ getClass().getName();
// 			throw new UnsupportedOperationException(msg);
// 		}
// 	}
// 
// 	private static class SystemClock extends TimeSource {
// 		@Override
// 		public long now() {
// 			return System.currentTimeMillis();
// 		}
// 	}
// 
// 	private static class FakeClock extends TimeSource {
// 		private long now;
// 
// 		public FakeClock(long now) {
// 			this.now = now;
// 		}
// 
// 		@Override
// 		public long now() {
// 			return now;
// 		}
// 
// 		public void advance(long milliseconds)
// 				throws UnsupportedOperationException {
// 			now += milliseconds;
// 		}
// 	}
// }


// Path: src/test/java/com/lassekoskela/maven/buildevents/AbstractBuildEventLogReportTest.java
import static java.lang.String.format;
import static java.util.Arrays.asList;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.junit.After;
import org.junit.Before;
import com.lassekoskela.time.Clock;

package com.lassekoskela.maven.buildevents;




public abstract class AbstractBuildEventLogReportTest {

	protected static Matcher<String> containsInOrder(final String... strings) {
		return new BaseMatcher<String>() {

			@Override
			public boolean matches(Object candidate) {
				if (candidate == null
						|| !candidate.getClass().equals(String.class)) {
					return false;