code: private void internalRemove(int index)
      {
          int moving = size - index - 1;
          if (moving > 0)
              System.arraycopy(cells, index + 1, cells, index, moving);
          cells[--size] = null;
      }
docs: Remove the cell at a given index, shifting the rest of the array to the left if needed.
  Please note that we mostly remove from the end, so the shifting should be rare.