class ExecJS::GraalJSRuntime::Context

def convert_js_to_ruby(value)

def convert_js_to_ruby(value)
  case value
  when true, false, Integer, Float
    value
  else
    if value.nil?
      nil
    elsif value.respond_to?(:call)
      nil
    elsif value.respond_to?(:to_str)
      value.to_str
    elsif value.respond_to?(:to_ary)
      value.to_ary.map do |e|
        if e.respond_to?(:call)
          nil
        else
          convert_js_to_ruby(e)
        end
      end
    else
      object = value
      h = {}
      object.instance_variables.each do |member|
        v = object[member]
        unless v.respond_to?(:call)
          h[member.to_s] = convert_js_to_ruby(v)
        end
      end
      h
    end
  end
end