// Path: src/individualBasedModel/Host.java
// public class Host {
// 	
// 	///////////////////////////////////
// 	// class variables and methods
// 	private static long hostCounter 	= -1;
// 	
// 	private static long nextHostUID() {
// 		hostCounter++;
// 		return (hostCounter);
// 	}
// 	
// 	/**
// 	 * reset the host counter between multiple replicate runs of DiscreteSpatialPhyloSimulator
// 	 */
// 	static void resetHostCounter() {
// 		hostCounter = -1;
// 	}
// 	
// 	///////////////////////////////////
// 	// instance variables & methods
// 
// 	// instance variables
// 	protected String 			name = null;
// 	protected long	 		 	uid;
// 	protected InfectionState 	state 		= InfectionState.SUSCEPTIBLE;
// 	
// 	protected Deme				myDeme;
// 	
// 	// constructors
// 	public Host(Deme myDeme) {
// 		this.uid 	= nextHostUID();
// 		this.name   = "H"+String.format("%07d", uid);	//""+uid;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	public Host(Deme myDeme, String name) {
// 		this.uid  	= nextHostUID();
// 		this.name 	= name;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	//////////////////////////////////
// 	// setters
// 	
// 	public void setState(InfectionState state) {
// 		this.state = state;
// 	}
// 	
// 	///////////////////////////////////
// 	// getters
// 	
// 	public InfectionState getState() {
// 		return state;
// 	}
// 	
// 	public String getName() {
// 		if (this.name == null) {
// 			this.name = ""+uid;
// 		}
// 		return this.name;
// 	}
// 	
// 	public String getNameWithDeme() {
// 		//return (getName() + "_" + myDeme.getName());
// 		return (name + "_" + myDeme);
// 	}
// 	
// 	public long getUid() {
// 		return uid;
// 	}
// 	
// 	/////////////////////////////////////////////////////////////////////////
// 	// comparison methods and toString
// 
// 	@Override
// 	public String toString() {
// 		return "Host [name=" + name + ", uid=" + uid + ", state=" + state
// 				+ ", myDeme=" + myDeme + "]";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + (int) (uid ^ (uid >>> 32));
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Host other = (Host) obj;
// 		if (uid != other.uid)
// 			return false;
// 		return true;
// 	}
// 	
// 	
// 	
// }


import java.util.*;
import individualBasedModel.Host;
	}
	
	/**
	 * for use with clone()
	 * @param uid
	 */
	private TransmissionNode(long uid) {
		this.uid 	= uid;
	}
	
	////////////////////////////////////////////////////////////////////////////////////

	/*
	public long getId() {
		return id;
	}
	*/
	
	public String getName() {
		/*
		if (host != null) {
			return host.getNameWithDeme() + "_" + uid;
		} else {
			return ""+uid;
		}
		*/
		return name;
	}
	
	
// Path: src/individualBasedModel/Host.java
// public class Host {
// 	
// 	///////////////////////////////////
// 	// class variables and methods
// 	private static long hostCounter 	= -1;
// 	
// 	private static long nextHostUID() {
// 		hostCounter++;
// 		return (hostCounter);
// 	}
// 	
// 	/**
// 	 * reset the host counter between multiple replicate runs of DiscreteSpatialPhyloSimulator
// 	 */
// 	static void resetHostCounter() {
// 		hostCounter = -1;
// 	}
// 	
// 	///////////////////////////////////
// 	// instance variables & methods
// 
// 	// instance variables
// 	protected String 			name = null;
// 	protected long	 		 	uid;
// 	protected InfectionState 	state 		= InfectionState.SUSCEPTIBLE;
// 	
// 	protected Deme				myDeme;
// 	
// 	// constructors
// 	public Host(Deme myDeme) {
// 		this.uid 	= nextHostUID();
// 		this.name   = "H"+String.format("%07d", uid);	//""+uid;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	public Host(Deme myDeme, String name) {
// 		this.uid  	= nextHostUID();
// 		this.name 	= name;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	//////////////////////////////////
// 	// setters
// 	
// 	public void setState(InfectionState state) {
// 		this.state = state;
// 	}
// 	
// 	///////////////////////////////////
// 	// getters
// 	
// 	public InfectionState getState() {
// 		return state;
// 	}
// 	
// 	public String getName() {
// 		if (this.name == null) {
// 			this.name = ""+uid;
// 		}
// 		return this.name;
// 	}
// 	
// 	public String getNameWithDeme() {
// 		//return (getName() + "_" + myDeme.getName());
// 		return (name + "_" + myDeme);
// 	}
// 	
// 	public long getUid() {
// 		return uid;
// 	}
// 	
// 	/////////////////////////////////////////////////////////////////////////
// 	// comparison methods and toString
// 
// 	@Override
// 	public String toString() {
// 		return "Host [name=" + name + ", uid=" + uid + ", state=" + state
// 				+ ", myDeme=" + myDeme + "]";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + (int) (uid ^ (uid >>> 32));
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Host other = (Host) obj;
// 		if (uid != other.uid)
// 			return false;
// 		return true;
// 	}
// 	
// 	
// 	
// }


// Path: src/trees/TransmissionNode.java
import java.util.*;
import individualBasedModel.Host;

	}
	
	/**
	 * for use with clone()
	 * @param uid
	 */
	private TransmissionNode(long uid) {
		this.uid 	= uid;
	}
	
	////////////////////////////////////////////////////////////////////////////////////

	/*
	public long getId() {
		return id;
	}
	*/
	
	public String getName() {
		/*
		if (host != null) {
			return host.getNameWithDeme() + "_" + uid;
		} else {
			return ""+uid;
		}
		*/
		return name;
	}
	
	
	public Host getHost() {