blocks[insert + overlap - 1].getStartTime(),
blocks[insert + overlap - 1].getEndTime(),
  private TimeBlock[] combine2 (int start, int end, TimeBlock[] blocks,                                int insert, int overlap, String color,                                String text) {    if (start >= end)      return blocks;    int num = 1;    TimeBlock pre = null, post = null;    if (overlap != 0) {      if (blocks[insert].getStartTime() < start) {        num++;        pre = new TimeBlock (blocks[insert].getStartTime(), start,                             timeOps, blocks[insert].getColor(),                             blocks[insert].getText());      }      if (blocks[insert + overlap - 1].getEndTime() > end) {        num++;        post = new TimeBlock (end,                              blocks[insert + overlap - 1].getStartTime(),                              timeOps,                              blocks[insert + overlap - 1].getColor(),                              blocks[insert + overlap - 1].getText());      }    }    TimeBlock[] newBlocks = new TimeBlock [blocks.length + num - overlap];    System.arraycopy (blocks, 0, newBlocks, 0, insert);    int pos = insert;    if (pre != null)      newBlocks [pos++] = pre;    newBlocks [pos++] = new TimeBlock (start, end, timeOps, color, text);    if (post != null)      newBlocks [pos++] = post;    System.arraycopy (blocks, insert + overlap, newBlocks, insert + num,                      newBlocks.length - insert - num);    return newBlocks;  }