// Path: src/net/sourceforge/arbaro/export/Console.java
// final public class Console {
// 	static final public int REALLY_QUIET=0;
// 	static final public int QUIET=1;
// 	static final public int VERBOSE=2;
// 	static final public int DEBUG=3;
// 
// 	static public char progrChr=' '; // show progress on Console
// 	
// 	static public int outputLevel;
// 
// 	static public void setOutputLevel(int level) {
// 		outputLevel = level;
// 		if (outputLevel>= VERBOSE)
// 			progrChr = '.';
// 		else
// 			progrChr = ' ';
// 	}
// 	
// 	static synchronized public boolean debug() {
// 		return outputLevel>=DEBUG;
// 	}
// 	
// 	static synchronized public void progressChar() {
// 		if (outputLevel>=VERBOSE) {
// 			System.err.print(progrChr);
// 		}
// 	}
// 	
// 	static synchronized public void verboseOutput(String msg) {
// 		if (outputLevel>=VERBOSE) {
// 			System.err.println(msg);
// 		}
// 	}
// 	
// 	static synchronized public void debugOutput(String msg) {
// 		if (outputLevel>=DEBUG) {
// 			System.err.println(msg);
// 		}
// 	}
// 
// 	static synchronized public void errorOutput(String msg) {
// 		if (outputLevel>REALLY_QUIET) {
// 			System.err.println(msg);
// 		}
// 	}
// 	
// 	static synchronized public void printException(Exception e) {
// 		if (outputLevel>REALLY_QUIET) {
// 			System.err.println(e);
// 			e.printStackTrace(System.err);
// 		}
// 	}
// 
// 	static synchronized public void progressChar(char c) {
// 		if (outputLevel>=VERBOSE) {
// 			System.err.print(c);
// 		}
// 	}
// 
// 	static public void setProgressChar(char consoleChar) {
// 		Console.progrChr= consoleChar;
// 	}
// 
// }


import net.sourceforge.arbaro.export.Console;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.InputStreamReader;
import java.io.File;
import java.io.FileReader;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.TreeMap;
import javax.swing.event.*;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;

	};

	public Params(Params other) {

		// copy values from other
		//debug = other.debug;
		//verbose = other.verbose;
		ignoreVParams = other.ignoreVParams;
		stopLevel = other.stopLevel;
		Species = other.Species;
//		Seed = other.Seed;
		Smooth = other.Smooth;

		// create paramDB
		paramDB = new Hashtable();
		levelParams = new LevelParams[4];
		for (int l=0; l<4; l++) {
			levelParams[l] = new LevelParams(l,paramDB);
		}
		registerParams();

		// copy param values
		for (Enumeration e = paramDB.elements(); e.hasMoreElements();) {
			AbstractParam p = ((AbstractParam)e.nextElement());
			try {
				AbstractParam otherParam = other.getParam(p.name);
				if (! otherParam.empty()) {
					p.setValue(otherParam.getValue());
				} // else use default value
			} catch (ParamException err) {

// Path: src/net/sourceforge/arbaro/export/Console.java
// final public class Console {
// 	static final public int REALLY_QUIET=0;
// 	static final public int QUIET=1;
// 	static final public int VERBOSE=2;
// 	static final public int DEBUG=3;
// 
// 	static public char progrChr=' '; // show progress on Console
// 	
// 	static public int outputLevel;
// 
// 	static public void setOutputLevel(int level) {
// 		outputLevel = level;
// 		if (outputLevel>= VERBOSE)
// 			progrChr = '.';
// 		else
// 			progrChr = ' ';
// 	}
// 	
// 	static synchronized public boolean debug() {
// 		return outputLevel>=DEBUG;
// 	}
// 	
// 	static synchronized public void progressChar() {
// 		if (outputLevel>=VERBOSE) {
// 			System.err.print(progrChr);
// 		}
// 	}
// 	
// 	static synchronized public void verboseOutput(String msg) {
// 		if (outputLevel>=VERBOSE) {
// 			System.err.println(msg);
// 		}
// 	}
// 	
// 	static synchronized public void debugOutput(String msg) {
// 		if (outputLevel>=DEBUG) {
// 			System.err.println(msg);
// 		}
// 	}
// 
// 	static synchronized public void errorOutput(String msg) {
// 		if (outputLevel>REALLY_QUIET) {
// 			System.err.println(msg);
// 		}
// 	}
// 	
// 	static synchronized public void printException(Exception e) {
// 		if (outputLevel>REALLY_QUIET) {
// 			System.err.println(e);
// 			e.printStackTrace(System.err);
// 		}
// 	}
// 
// 	static synchronized public void progressChar(char c) {
// 		if (outputLevel>=VERBOSE) {
// 			System.err.print(c);
// 		}
// 	}
// 
// 	static public void setProgressChar(char consoleChar) {
// 		Console.progrChr= consoleChar;
// 	}
// 
// }


// Path: src/net/sourceforge/arbaro/params/Params.java
import net.sourceforge.arbaro.export.Console;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.InputStreamReader;
import java.io.File;
import java.io.FileReader;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.TreeMap;
import javax.swing.event.*;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;

	};

	public Params(Params other) {

		// copy values from other
		//debug = other.debug;
		//verbose = other.verbose;
		ignoreVParams = other.ignoreVParams;
		stopLevel = other.stopLevel;
		Species = other.Species;
//		Seed = other.Seed;
		Smooth = other.Smooth;

		// create paramDB
		paramDB = new Hashtable();
		levelParams = new LevelParams[4];
		for (int l=0; l<4; l++) {
			levelParams[l] = new LevelParams(l,paramDB);
		}
		registerParams();

		// copy param values
		for (Enumeration e = paramDB.elements(); e.hasMoreElements();) {
			AbstractParam p = ((AbstractParam)e.nextElement());
			try {
				AbstractParam otherParam = other.getParam(p.name);
				if (! otherParam.empty()) {
					p.setValue(otherParam.getValue());
				} // else use default value
			} catch (ParamException err) {

				Console.errorOutput("Error copying params: "+err.getMessage());
