// Path: src/main/java/jasm/util/Pair.java
// public class Pair<FIRST,SECOND> {
// 	protected final FIRST first;
// 	protected final SECOND second;	
// 	
// 	public Pair(FIRST f, SECOND s) {
// 		first=f;
// 		second=s;			
// 	}		
// 	
// 	public FIRST first() { return first; }
// 	public SECOND second() { return second; }
// 	
// 	public int hashCode() {
// 		int fhc = first == null ? 0 : first.hashCode();
// 		int shc = second == null ? 0 : second.hashCode();
// 		return fhc ^ shc; 
// 	}
// 		
// 	public boolean equals(Object o) {
// 		if(o instanceof Pair) {
// 			Pair<FIRST, SECOND> p = (Pair<FIRST, SECOND>) o;
// 			boolean r = false;
// 			if(first != null) { r = first.equals(p.first()); }
// 			else { r = p.first() == first; }
// 			if(second != null) { r &= second.equals(p.second()); }
// 			else { r &= p.second() == second; }
// 			return r;				
// 		}
// 		return false;
// 	}
// 	
// 	public String toString() {
// 		String fstr = first != null ? first.toString() : "null";
// 		String sstr = second != null ? second.toString() : "null";
// 		return "(" + fstr + ", " + sstr + ")";
// 	}
// }


import jasm.util.Pair;
import java.util.*;
		}
		
		public int compareTo(JvmType t) {
			if (t instanceof JvmType.Int) {
				return 0;
			} else if (t instanceof JvmType.Null || t instanceof JvmType.Void
					|| t instanceof JvmType.Bool || t instanceof JvmType.Byte
					|| t instanceof JvmType.Char || t instanceof JvmType.Short) {
				return 1;
			} else {
				return -1;
			}
		}
		
		public List<JvmType.Variable> usedVariables() {
			return new ArrayList<JvmType.Variable>();
		}
	}
	
	/**
	 * Represents the Java type "long"
	 * @author David J. Pearce
	 *
	 */
	public static class Long implements Primitive {
		public String toString() {
			return "long";
		}
		
		public boolean equals(Object o) {
// Path: src/main/java/jasm/util/Pair.java
// public class Pair<FIRST,SECOND> {
// 	protected final FIRST first;
// 	protected final SECOND second;	
// 	
// 	public Pair(FIRST f, SECOND s) {
// 		first=f;
// 		second=s;			
// 	}		
// 	
// 	public FIRST first() { return first; }
// 	public SECOND second() { return second; }
// 	
// 	public int hashCode() {
// 		int fhc = first == null ? 0 : first.hashCode();
// 		int shc = second == null ? 0 : second.hashCode();
// 		return fhc ^ shc; 
// 	}
// 		
// 	public boolean equals(Object o) {
// 		if(o instanceof Pair) {
// 			Pair<FIRST, SECOND> p = (Pair<FIRST, SECOND>) o;
// 			boolean r = false;
// 			if(first != null) { r = first.equals(p.first()); }
// 			else { r = p.first() == first; }
// 			if(second != null) { r &= second.equals(p.second()); }
// 			else { r &= p.second() == second; }
// 			return r;				
// 		}
// 		return false;
// 	}
// 	
// 	public String toString() {
// 		String fstr = first != null ? first.toString() : "null";
// 		String sstr = second != null ? second.toString() : "null";
// 		return "(" + fstr + ", " + sstr + ")";
// 	}
// }


// Path: src/main/java/jasm/lang/JvmType.java
import jasm.util.Pair;
import java.util.*;

		}
		
		public int compareTo(JvmType t) {
			if (t instanceof JvmType.Int) {
				return 0;
			} else if (t instanceof JvmType.Null || t instanceof JvmType.Void
					|| t instanceof JvmType.Bool || t instanceof JvmType.Byte
					|| t instanceof JvmType.Char || t instanceof JvmType.Short) {
				return 1;
			} else {
				return -1;
			}
		}
		
		public List<JvmType.Variable> usedVariables() {
			return new ArrayList<JvmType.Variable>();
		}
	}
	
	/**
	 * Represents the Java type "long"
	 * @author David J. Pearce
	 *
	 */
	public static class Long implements Primitive {
		public String toString() {
			return "long";
		}
		
		public boolean equals(Object o) {
			return o instanceof JvmType.Long;