class InvocationContextIterator include Enumerable attr_accessor :_array_as_invocation_context private :_array_as_invocation_context def initialize(array_as_invocation_context) @_array_as_invocation_context = array_as_invocation_context @position = -1 @array_size = @_array_as_invocation_context.get_size.execute.get_value @array_as_list = Array.new(@array_size) @array_as_list.each_index do |i| @array_as_list[i] = _array_as_invocation_context.get_index(i) end end def each(&block) @array_as_list.each(&block) end def [](i) @_array_as_invocation_context.get_index(i) end def []=(i, value) @_array_as_invocation_context.set_index(i, value).execute end end