anchor.diff:        drawer
       ];
   
  -    if (_menuController.isOpen) {
  -      children.add(new StockMenu(controller: _menuController)
  -                   ..events.listen('gesturetap', (_) {
  -        // TODO(abarth): We should close the menu when you tap away from the
  -        // menu rather than when you tap on the menu.
  -        setState(() {
  -          _menuController.close();
  -        });
  -      }));
  +    if (_menuController != null) {
  +      var menu = new EventTarget(
  +        new StockMenu(controller: _menuController),
  +        onGestureTap: (_) {
  +          // TODO(abarth): We should close the menu when you tap away from the
  +          // menu rather than when you tap on the menu.
  +          setState(() {
  +            _menuController.close();
  +            _menuController = null;
  +          });
  +        }
  +      );
  +      children.add(menu);
       }
   
       return new Container(key: 'StocksApp', children: children);
  
positive.code: 
    void _handleMenuClick(_) {
      setState(() {
        _menuController.open();
      });
    }
  
negative.code: class StocksApp extends App {
  
    DrawerController _drawerController = new DrawerController();
    PopupMenuController _menuController;
  
    static Style _style = new Style('''
      display: flex;
  