// Path: src/main/java/abra/ContigAligner.java
// public static class ContigAlignerResult {
// 		
// 	// Used for testing
// 	static boolean PAD_CONTIG = true;
// 		
// 	private int localRefPos;
// 	private String cigar;
// 		
// 	private String chromosome;
// 	private int refContextStart;
// 		
// 	private String sequence;
// 	private int score;
// 	private boolean isSecondary = false;
// 		
// 	public static final ContigAlignerResult INDEL_NEAR_END = new ContigAlignerResult();
// 
// 	private ContigAlignerResult() {
// 	}
// 		
// 	ContigAlignerResult(int refPos, String cigar, String chromosome, int refContextStart, String sequence, int score) {
// 		this.localRefPos = refPos;
// 		this.cigar = cigar;
// 		this.chromosome = chromosome;
// 		this.refContextStart = refContextStart;
// 		this.sequence = sequence;
// 		this.score = score;
// 	}
// 		
// 	public int getRefPos() {
// 		return localRefPos;
// 	}
// 	public String getCigar() {
// 		return cigar;
// 	}
// 
// 	public String getChromosome() {
// 		return chromosome;
// 	}
// 
// 	public int getRefContextStart() {
// 		return refContextStart;
// 	}
// 		
// 	// This is the actual genomic position 
// 	public int getGenomicPos() {
// 		return localRefPos + refContextStart;
// 	}
// 		
// 	public String getSequence() {
// 		return sequence;
// 	}
// 		
// 	public int getScore() {
// 		return score;
// 	}
// 		
// 	public boolean isSecondary() {
// 		return isSecondary;
// 	}
// 
// 	public void setSecondary(boolean isSecondary) {
// 		this.isSecondary = isSecondary;
// 	}
// }
// 
// Path: src/main/java/abra/SimpleMapper.java
// enum Orientation {
// 	UNSET, FORWARD, REVERSE;
// }
// 
// Path: src/main/java/abra/SimpleMapper.java
// static class SimpleMapperResult {
// 	private int pos;
// 	private int mismatches;
// 	private Orientation orientation;
// 		
// 	SimpleMapperResult(int pos, int mismatches, Orientation orientation) {
// 		this.pos = pos;
// 		this.mismatches = mismatches;
// 		this.orientation = orientation;
// 	}
// 		
// 	public int getPos() {
// 		return pos;
// 	}
// 	public int getMismatches() {
// 		return mismatches;
// 	}
// 	public Orientation getOrientation() {
// 		return orientation;
// 	}
// }


import htsjdk.samtools.SAMRecord;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import abra.ContigAligner.ContigAlignerResult;
import abra.SimpleMapper.Orientation;
import abra.SimpleMapper.SimpleMapperResult;
				result = null;
			}
		} else if (alignments.size() > 1) {
			// We have multiple possible alignments that are equal to the original alignment
			if (bestMismatches == origEditDist) {
				result = Alignment.AMBIGUOUS;
			}
		}
		
		return result;
	}
	
	
	static class AlignmentHit {
		SimpleMapperResult mapResult;
		SimpleMapper mapper;
		Feature region;
		
		AlignmentHit(SimpleMapperResult mapResult, SimpleMapper mapper, Feature region) {
			this.mapResult = mapResult;
			this.mapper = mapper;
			this.region = region;
		}
	}
	
	//TODO: Genericize this and share ?
	static class Alignment {
		String chromosome;
		int pos;
		String cigar;
// Path: src/main/java/abra/ContigAligner.java
// public static class ContigAlignerResult {
// 		
// 	// Used for testing
// 	static boolean PAD_CONTIG = true;
// 		
// 	private int localRefPos;
// 	private String cigar;
// 		
// 	private String chromosome;
// 	private int refContextStart;
// 		
// 	private String sequence;
// 	private int score;
// 	private boolean isSecondary = false;
// 		
// 	public static final ContigAlignerResult INDEL_NEAR_END = new ContigAlignerResult();
// 
// 	private ContigAlignerResult() {
// 	}
// 		
// 	ContigAlignerResult(int refPos, String cigar, String chromosome, int refContextStart, String sequence, int score) {
// 		this.localRefPos = refPos;
// 		this.cigar = cigar;
// 		this.chromosome = chromosome;
// 		this.refContextStart = refContextStart;
// 		this.sequence = sequence;
// 		this.score = score;
// 	}
// 		
// 	public int getRefPos() {
// 		return localRefPos;
// 	}
// 	public String getCigar() {
// 		return cigar;
// 	}
// 
// 	public String getChromosome() {
// 		return chromosome;
// 	}
// 
// 	public int getRefContextStart() {
// 		return refContextStart;
// 	}
// 		
// 	// This is the actual genomic position 
// 	public int getGenomicPos() {
// 		return localRefPos + refContextStart;
// 	}
// 		
// 	public String getSequence() {
// 		return sequence;
// 	}
// 		
// 	public int getScore() {
// 		return score;
// 	}
// 		
// 	public boolean isSecondary() {
// 		return isSecondary;
// 	}
// 
// 	public void setSecondary(boolean isSecondary) {
// 		this.isSecondary = isSecondary;
// 	}
// }
// 
// Path: src/main/java/abra/SimpleMapper.java
// enum Orientation {
// 	UNSET, FORWARD, REVERSE;
// }
// 
// Path: src/main/java/abra/SimpleMapper.java
// static class SimpleMapperResult {
// 	private int pos;
// 	private int mismatches;
// 	private Orientation orientation;
// 		
// 	SimpleMapperResult(int pos, int mismatches, Orientation orientation) {
// 		this.pos = pos;
// 		this.mismatches = mismatches;
// 		this.orientation = orientation;
// 	}
// 		
// 	public int getPos() {
// 		return pos;
// 	}
// 	public int getMismatches() {
// 		return mismatches;
// 	}
// 	public Orientation getOrientation() {
// 		return orientation;
// 	}
// }


// Path: src/main/java/abra/ReadEvaluator.java
import htsjdk.samtools.SAMRecord;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import abra.ContigAligner.ContigAlignerResult;
import abra.SimpleMapper.Orientation;
import abra.SimpleMapper.SimpleMapperResult;

				result = null;
			}
		} else if (alignments.size() > 1) {
			// We have multiple possible alignments that are equal to the original alignment
			if (bestMismatches == origEditDist) {
				result = Alignment.AMBIGUOUS;
			}
		}
		
		return result;
	}
	
	
	static class AlignmentHit {
		SimpleMapperResult mapResult;
		SimpleMapper mapper;
		Feature region;
		
		AlignmentHit(SimpleMapperResult mapResult, SimpleMapper mapper, Feature region) {
			this.mapResult = mapResult;
			this.mapper = mapper;
			this.region = region;
		}
	}
	
	//TODO: Genericize this and share ?
	static class Alignment {
		String chromosome;
		int pos;
		String cigar;
		Orientation orientation;