Would it be possible to add methods and/or events to expose the visibility state of Menu instances? For example methods like `Menu#isVisible()` and `Menu#isHidden()` and events like "show" and "hide".
shell/browser/api/atom_api_tray.cc
: tray_icon_(TrayIcon::Create()) {
  SetImage(args->isolate(), image);
  tray_icon_->AddObserver(this);
  InitWithArgs(args);
}
Tray::~Tray() = default;
gin_helper::WrappableBase* Tray::New(gin_helper::ErrorThrower thrower,
                                     gin::Handle<NativeImage> image,
                                     gin_helper::Arguments* args) {
  if (!Browser::Get()->is_ready()) {
    thrower.ThrowError("Cannot create Tray before app is ready");
    return nullptr;
  }
  return new Tray(image, args);
}
void Tray::OnClicked(const gfx::Rect& bounds,
                     const gfx::Point& location,
                     int modifiers) {
  EmitWithFlags("click", modifiers, bounds, location);
}
void Tray::OnDoubleClicked(const gfx::Rect& bounds, int modifiers) {
  EmitWithFlags("double-click", modifiers, bounds);
}
void Tray::OnRightClicked(const gfx::Rect& bounds, int modifiers) {