anchor.diff:          children: bottomSheets,
           alignment: const FractionalOffset(0.5, 1.0) // bottom-aligned, centered
         );
  -      _addIfNonNull(children, stack, _Child.bottomSheet);
  +      _addIfNonNull(children, stack, _ScaffoldSlot.bottomSheet);
       }
   
       if (_snackBars.isNotEmpty)
  -      _addIfNonNull(children, _snackBars.first._widget, _Child.snackBar);
  +      _addIfNonNull(children, _snackBars.first._widget, _ScaffoldSlot.snackBar);
   
       if (config.floatingActionButton != null) {
         Widget fab = new _FloatingActionButtonTransition(
           key: new ValueKey<Key>(config.floatingActionButton.key),
           child: config.floatingActionButton
         );
  -      children.add(new LayoutId(child: fab, id: _Child.floatingActionButton));
  +      children.add(new LayoutId(child: fab, id: _ScaffoldSlot.floatingActionButton));
       }
   
       if (config.drawer != null) {
         children.add(new LayoutId(
  -        id: _Child.drawer,
  +        id: _ScaffoldSlot.drawer,
           child: new DrawerController(
             key: _drawerKey,
             child: config.drawer
  
positive.code: const double _kFloatingActionButtonMargin = 16.0; // TODO(hmuller): should be device dependent
  const Duration _kFloatingActionButtonSegue = const Duration(milliseconds: 400);
  
  enum _Child {
    body,
    toolBar,
    bottomSheet,
  
negative.code:     Size bottomSheetSize = Size.zero;
      Size snackBarSize = Size.zero;
  
      if (isChild(_ScaffoldSlot.bottomSheet)) {
        bottomSheetSize = layoutChild(_ScaffoldSlot.bottomSheet, fullWidthConstraints);
        positionChild(_ScaffoldSlot.bottomSheet, new Offset((size.width - bottomSheetSize.width) / 2.0, size.height - bottomSheetSize.height));
      }
  
      if (isChild(_ScaffoldSlot.snackBar)) {
        snackBarSize = layoutChild(_ScaffoldSlot.snackBar, fullWidthConstraints);
        positionChild(_ScaffoldSlot.snackBar, new Offset(0.0, size.height - snackBarSize.height));
      }
  
      if (isChild(_ScaffoldSlot.floatingActionButton)) {
        final Size fabSize = layoutChild(_ScaffoldSlot.floatingActionButton, looseConstraints);
        final double fabX = size.width - fabSize.width - _kFloatingActionButtonMargin;
        double fabY = size.height - fabSize.height - _kFloatingActionButtonMargin;
        if (snackBarSize.height > 0.0)
          fabY = math.min(fabY, size.height - snackBarSize.height - fabSize.height - _kFloatingActionButtonMargin);
        if (bottomSheetSize.height > 0.0)
          fabY = math.min(fabY, size.height - bottomSheetSize.height - fabSize.height / 2.0);
        positionChild(_ScaffoldSlot.floatingActionButton, new Offset(fabX, fabY));
      }
  
      if (isChild(_ScaffoldSlot.drawer)) {
        layoutChild(_ScaffoldSlot.drawer, new BoxConstraints.tight(size));
        positionChild(_ScaffoldSlot.drawer, Offset.zero);
      }
    }
  
  