public void appendTo(Appendable a){
    if (listData.size()>0)
      try {
        doString(a, initial, beforeEach, listData.get(0), afterEach);
        for (int i=1; i<listData.size(); i++)
          doString(a, between, beforeEach, listData.get(i), afterEach);
        a.append(last);
      } catch (IOException e) {
        throw new RuntimeException(e);
      }
  }