def shift(delta_col, delta_row)
      raise ArgumentError, "Invalid argument 'delta_col'. Expected Integer, got #{delta_col.class}." unless delta_col.is_a?(Integer)
      raise ArgumentError, "Invalid argument 'delta_row'. Expected Integer, got #{delta_row.class}." unless delta_row.is_a?(Integer)
      new_columns = @indices.collect {|index| index % @bin_image.columns + delta_col}
      new_rows = @indices.collect {|index| index / @bin_image.columns + delta_row}
      # Set new indices:
      @indices = Array.new(new_rows.length) {|i| new_columns[i] + new_rows[i] * @bin_image.columns}
    end
def shift(delta_col, delta_row)
      raise ArgumentError, "Invalid argument 'delta_col'. Expected Integer, got #{delta_col.class}." unless delta_col.is_a?(Integer)
      raise ArgumentError, "Invalid argument 'delta_row'. Expected Integer, got #{delta_row.class}." unless delta_row.is_a?(Integer)
      new_columns = @indices.collect {|index| index % @bin_image.columns + delta_col}
      new_rows = @indices.collect {|index| index / @bin_image.columns + delta_row}
      # Set new indices:
      @indices = Array.new(new_rows.length) {|i| new_columns[i] + new_rows[i] * @bin_image.columns}
    end
Shifts the indices of this selection by the specified number of columns
 and rows. Positive arguments increment the column and row indices.

 @note No out of bounds check is performed for indices that are shifted
   past the image boundary!
 @param [Integer] delta_col the desired column shift
 @param [Integer] delta_row the desired row shift
 @return [Array] the shifted indices