docs: @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;
      }