class Array

def select! # :yield: x

:yield: x
def select! # :yield: x
  i = 0
  each_with_index { |x, j|
    yield x or next
    self[i] = x if i != j
    i += 1
  }
  return nil if i == size
  self[i..-1] = []
  self
end unless method_defined?(:select!)

def sort_by!(&block) # :yield: x

:yield: x
def sort_by!(&block) # :yield: x
  replace(sort_by(&block))
end unless method_defined?(:sort_by!)