code: public synchronized TableModel<V> insertRow(int index, Collection<V> values) {
          ArrayList<V> list = new ArrayList<V>(values);
          rows.add(index, list);
          for(Listener<V> listener: listeners) {
              listener.onRowAdded(this, index);
          }
          return this;
      }
docs: Inserts a new row to the table model at a particular index
  @param index Index the new row should have, 0 means the first row and <i>row count</i> will append the row at the
  end
  @param values Data to associate with the new row, mapped column by column in order
  @return Itself