class ReeMapper::ErrorWithLocation

def field_name

def field_name
  @field_name_parts.reduce { "#{_1}[#{_2}]" }
end

def full_message(...)

def full_message(...)
  msg = super
  return msg if location.nil?
  last_sym_idx = msg.index(/\).*\n/)
  return msg if last_sym_idx.nil?
  msg.insert(last_sym_idx + 1, ", located at #{location}")
end

def initialize(message, location = nil, field_name_parts = [])

def initialize(message, location = nil, field_name_parts = [])
  @message = message
  @location = location
  @field_name_parts = field_name_parts
end

def message

def message
  msg = @message
  if location
    msg = "#{msg}, located at #{location}"
  end
  return msg if @field_name_parts.empty?
  "`#{field_name}` #{msg}"
end

def message

def message
  return @message if @field_name_parts.empty?
  "`#{field_name}` #{@message}"
end

def prepend_field_name(part)

def prepend_field_name(part)
  @field_name_parts.unshift part
  nil
end