module Concurrent::Synchronization::AbstractStruct

def ns_get(member)

@!visibility private

@!macro struct_get
def ns_get(member)
  if member.is_a? Integer
    if member >= @values.length
      raise IndexError.new("offset #{member} too large for struct(size:#{@values.length})")
    end
    @values[member]
  else
    send(member)
  end
rescue NoMethodError
  raise NameError.new("no member '#{member}' in struct")
end