def erlang_inspect(raw = false)
      if improper?
        result = '['
        to_proper_list.each_with_index { |obj, i| result << ',' if i > 0; result << Erlang.inspect(obj, raw: raw) }
        result << '|'
        result << Erlang.inspect(last(true), raw: raw)
        result << ']'
        return result
      else
        result = '['
        each_with_index { |obj, i| result << ',' if i > 0; result << Erlang.inspect(obj, raw: raw) }
        result << ']'
        return result
      end
    end
def erlang_inspect(raw = false)
      if improper?
        result = '['
        to_proper_list.each_with_index { |obj, i| result << ',' if i > 0; result << Erlang.inspect(obj, raw: raw) }
        result << '|'
        result << Erlang.inspect(last(true), raw: raw)
        result << ']'
        return result
      else
        result = '['
        each_with_index { |obj, i| result << ',' if i > 0; result << Erlang.inspect(obj, raw: raw) }
        result << ']'
        return result
      end
    end
def |(value)
   value = value.__erlang_term__ if not value.kind_of?(Erlang::Term)
   return value if empty?
   improper = Erlang::List.is_improper?(value)
   out = tail = Erlang::List.allocate
   list = self
   while Erlang::List.is_list?(list) && !list.empty?
     new_node = Erlang::List.allocate
     new_node.instance_variable_set(:@head, list.head)
     new_node.instance_variable_set(:@improper, improper)
     tail.instance_variable_set(:@tail, new_node)
     tail.instance_variable_set(:@improper, improper)
     tail.immutable!
     tail = new_node
     list = list.tail
   end
   tail.instance_variable_set(:@tail, value)
   tail.immutable!
   return out.tail
 end
 def improper_last(value = nil)
   if value.nil?
     raise Erlang::ProperListError if not improper?
     list = self
     list = list.tail while list.tail.is_a?(Erlang::List)
     return list.tail
   else
     self | value
   end
 end
 Allows this `Map` to be printed using `Erlang.inspect()`.

 @return [String]