if (!locator.next())
if (!locator.next())  { hasMoreData = false;
  private void recursiveWriteFormattedData(OutputStream outputstream,                                           Locator locator,                                           List commands,                                           AxisInterface fastestAxis,                                           String[] noDataValues)  {    int stop = commands.size();    for (int i = 0; i<stop; i++) {      FormattedIOCmd command = (FormattedIOCmd) commands.get(i);      if (command instanceof RepeatFormattedIOCmd) {        int end = ((RepeatFormattedIOCmd) command).getCount().intValue();        List repeatCommandList = ((RepeatFormattedIOCmd)command).getCommands();        for (int j = 0; j < end; j ++) {          recursiveWriteFormattedData(outputstream, locator, repeatCommandList, fastestAxis, noDataValues);        }      }      else {        if (command instanceof SkipCharFormattedIOCmd) {          try {            writeOut(outputstream, getStringData(locator));          }          catch (NoDataException e) {            String noData = noDataValues[locator.getAxisLocation(fastestAxis)];            if (noData != null)                writeOut(outputstream, noData);          }          String output=((SkipCharFormattedIOCmd) command).getOutput();          if (output == null) {            writeOut(outputstream, SkipCharFormattedIOCmd.DefaultOutput) ;          }          else {            writeOut(outputstream, output);          }          if (!locator.next())      //no more data, we are done            return;        }      }    //done dealing with SkipCharFormattedIOCmd          } //end of outer for loop  }