// Path: edits-core/src/main/java/org/edits/MapInteger.java
// public class MapInteger extends HashMap<String, Integer> implements Comparator<String> {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	@Override
// 	public int compare(String o1, String o2) {
// 		return Double.compare(get(o1), get(o2));
// 	}
// 
// 	public Integer get(String s) {
// 		if (containsKey(s))
// 			return super.get(s);
// 		put(s, 0);
// 		return 0;
// 	}
// 
// 	public void increment(String a) {
// 		put(a, get(a) + 1);
// 	}
// 
// 	public void increment(String a, int value) {
// 		put(a, get(a) + value);
// 	}
// 
// 	public List<String> ordered() {
// 		List<String> values = Lists.newArrayList(this.keySet());
// 		Collections.sort(values, this);
// 		return values;
// 	}
// }
// 
// Path: edits-core/src/main/java/org/edits/engines/OptimizationGoal.java
// public enum Target {
// 	ACCURACY, FMEASURE, PRECISION, RECALL
// }


import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import org.edits.MapInteger;
import org.edits.engines.OptimizationGoal.Target;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

		buff.append("=== Confusion Matrix ===" + "\n\n");

		sv = new String[getClasses().size() + 1][getClasses().size() + 1];

		for (int i = 0; i < getClasses().size(); i++)
			sv[i][0] = getClasses().get(i);

		sv[getClasses().size()][0] = "<-- classified as";

		z = 1;
		for (String cls : getClasses()) {
			for (int i = 0; i < getClasses().size(); i++)
				sv[i][z] = "" + count(cls, getClasses().get(i));

			sv[getClasses().size()][z] = cls;
			z++;
		}

		buff.append(tableToString(sv));

		for (String key : getSubClasses().keySet()) {
			buff.append("=== " + key + " ===\n");
			buff.append(getSubClasses().get(key) + "\n");
		}

		return buff.toString();
	}

	public double value(OptimizationGoal goal) {
// Path: edits-core/src/main/java/org/edits/MapInteger.java
// public class MapInteger extends HashMap<String, Integer> implements Comparator<String> {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	@Override
// 	public int compare(String o1, String o2) {
// 		return Double.compare(get(o1), get(o2));
// 	}
// 
// 	public Integer get(String s) {
// 		if (containsKey(s))
// 			return super.get(s);
// 		put(s, 0);
// 		return 0;
// 	}
// 
// 	public void increment(String a) {
// 		put(a, get(a) + 1);
// 	}
// 
// 	public void increment(String a, int value) {
// 		put(a, get(a) + value);
// 	}
// 
// 	public List<String> ordered() {
// 		List<String> values = Lists.newArrayList(this.keySet());
// 		Collections.sort(values, this);
// 		return values;
// 	}
// }
// 
// Path: edits-core/src/main/java/org/edits/engines/OptimizationGoal.java
// public enum Target {
// 	ACCURACY, FMEASURE, PRECISION, RECALL
// }


// Path: edits-core/src/main/java/org/edits/engines/EvaluationStatistics.java
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import org.edits.MapInteger;
import org.edits.engines.OptimizationGoal.Target;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;


		buff.append("=== Confusion Matrix ===" + "\n\n");

		sv = new String[getClasses().size() + 1][getClasses().size() + 1];

		for (int i = 0; i < getClasses().size(); i++)
			sv[i][0] = getClasses().get(i);

		sv[getClasses().size()][0] = "<-- classified as";

		z = 1;
		for (String cls : getClasses()) {
			for (int i = 0; i < getClasses().size(); i++)
				sv[i][z] = "" + count(cls, getClasses().get(i));

			sv[getClasses().size()][z] = cls;
			z++;
		}

		buff.append(tableToString(sv));

		for (String key : getSubClasses().keySet()) {
			buff.append("=== " + key + " ===\n");
			buff.append(getSubClasses().get(key) + "\n");
		}

		return buff.toString();
	}

	public double value(OptimizationGoal goal) {
		if (Target.ACCURACY.equals(goal.getTarget()))