Always recreate the Agent instead of storing a singleton.

Fixes an issue where new classes were not included in coverage data when
added after an Agent has already been created.

Test: local testing
Bug: 203236809
Change-Id: I3928ff99a50e4a106749dc96f93d8472c74d4a70
diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
index 45b7ccd..c4bf874 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
@@ -34,8 +34,6 @@
  */
 public class Agent implements IAgent {
 
-	private static Agent singleton;
-
 	/**
 	 * Returns a global instance which is already started. If the method is
 	 * called the first time the instance is created with the given options.
@@ -63,18 +61,15 @@
 	 * @return global instance
 	 */
 	public static synchronized Agent getInstance(final AgentOptions options, RuntimeData data) {
-		if (singleton == null) {
-			final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR, data);
-			agent.startup();
-			Runtime.getRuntime().addShutdownHook(new Thread() {
-				@Override
-				public void run() {
-					agent.shutdown();
-				}
-			});
-			singleton = agent;
-		}
-		return singleton;
+		final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR, data);
+		agent.startup();
+		Runtime.getRuntime().addShutdownHook(new Thread() {
+			@Override
+			public void run() {
+				agent.shutdown();
+			}
+		});
+		return agent;
 	}
 	// END android-change
 
@@ -93,9 +88,8 @@
 	public static synchronized Agent getInstance() throws IllegalStateException {
 		// BEGIN android-change
 		// throw new IllegalStateException("JaCoCo agent not started.");
-		singleton = Offline.createAgent();
+		return Offline.createAgent();
 		// END android-change
-		return singleton;
 	}
 
 	private final AgentOptions options;