code: @GuardedBy("lock")
      protected T[] getRow(int index) {
          T[] row=matrix[index];
          if(row == null) {
              row=(T[])new Object[elements_per_row];
              matrix[index]=row;
          }
          return row;
      }
docs: Returns a row. Creates a new row and inserts it at index if the row at index doesn't exist
  @param index
  @return A row