module V8::Access::Names

def accessible_names(obj, special_methods = false)

def accessible_names(obj, special_methods = false)
  obj.public_methods(false).map {|m| m.to_s}.to_set.tap do |methods|
    ancestors = obj.class.ancestors.dup
    while ancestor = ancestors.shift
      break if ancestor == ::Object
      methods.merge(ancestor.public_instance_methods(false).map {|m| m.to_s})
    end
    methods.reject!(&special?) unless special_methods
  end
end