private static TreeMap<Character,Byte> mapExtrema(SetOfCharsSyntax left,SetOfCharsSyntax right)
	{
		TreeMap<Character,Byte> extrema = new TreeMap<Character,Byte>();
		for(int i = 0;i < left.canonicalRanges.length;i++)
		{
			if(!extrema.containsKey(left.canonicalRanges[i][0])) extrema.put(left.canonicalRanges[i][0],Masks.LEFT_TURNS_ON);
			else extrema.put(left.canonicalRanges[i][0],(byte)(extrema.get(left.canonicalRanges[i][0]) | Masks.LEFT_TURNS_ON));
			if(!extrema.containsKey(left.canonicalRanges[i][1])) extrema.put(left.canonicalRanges[i][1],Masks.LEFT_TURNS_OFF);
			else extrema.put(left.canonicalRanges[i][1],(byte)(extrema.get(left.canonicalRanges[i][1]) | Masks.LEFT_TURNS_OFF));
		}
		for(int i = 0;i < right.canonicalRanges.length;i++)
		{
			if(!extrema.containsKey(right.canonicalRanges[i][0])) extrema.put(right.canonicalRanges[i][0],Masks.RIGHT_TURNS_ON);
			else extrema.put(right.canonicalRanges[i][0],(byte)(extrema.get(right.canonicalRanges[i][0]) | Masks.RIGHT_TURNS_ON));
			if(!extrema.containsKey(right.canonicalRanges[i][1])) extrema.put(right.canonicalRanges[i][1],Masks.RIGHT_TURNS_OFF);
			else extrema.put(right.canonicalRanges[i][1],(byte)(extrema.get(right.canonicalRanges[i][1]) | Masks.RIGHT_TURNS_OFF));
		}
		// DEBUG-X-BEGIN
		// System.err.println(extrema);
		// DEBUG-X-END
		return extrema;
	}