//Based on ManageCodonPositions.nexusStringForSpecsSet
if (pNumSpecsSet != null) {
CodonPositionsSet codonPossSet = (CodonPositionsSet) pNumSpecsSet;
int unassignedPosition = 4;
MesquiteNumber posIndex = new MesquiteNumber();
boolean someValues = false;
int interval = 1;
for (int iw = 0; iw < 5; iw++) {
posIndex.setValue(iw);
int continuing = 0;
ColumnRangeConvertHelper aHelper = new ColumnRangeConvertHelper();
aHelper.setNumber(posIndex);
if (iw == 0) {
interval = 1;
} else {
interval = 3;
}
someValues = false;
int lastWritten = -1;
ColumnRange range = null;
for (int ic = 0; ic < pNumChar; ic++) {
//for noncoding ranges, the interval is 3, need add 2:
if (continuing > 0 && iw > 0 && ic < pNumChar -2) {
ic = ic +2;
}
if (codonPossSet.equals(ic, posIndex)
|| (codonPossSet.getInt(ic) == MesquiteInteger.unassigned && (iw == unassignedPosition))) {
if (continuing == 0) {
lastWritten = ic;
range = new ColumnRange();