class Google::Protobuf::RepeatedField::ProxyingEnumerator

such as #sort!, modifies itself rather than a new array, such as #sort
This only applies in cases where the calling function which created the enumerator,
propagates changes made by user of enumerator back to the original repeated field.

def each(*args, &block)

def each(*args, &block)
  results = []
  external_enumerator.each_with_index do |val, i|
    result = yield(val)
    results << result
    #nil means no change occurred from yield; usually occurs when #to_a is called
    if result
      repeated_field[i] = result if result != val
    end
  end
  results
end