if (length > BUFFER_LEN) {
      final int end = i + length;
      while (i < end) {
        int next = i + BUFFER_LEN;
        append(buf, i, next<end ? BUFFER_LEN : (end-i));