anchor.diff:      if (to.tryAdd(item)) {
         from.removeAt(index);
       } else {
  -      // TODO(bob): Show an error message?
  +      // TODO: Show an error message?
       }
   
       if (home.rightView == HomeView.CRUCIBLE) home.refreshRecipe();
  
positive.code: /// What the user is currently doing on the home screen.
  abstract class HomeMode {
    static final VIEW = const ViewHomeMode();
    static final DROP = const DropHomeMode();
    static final GET = const GetHomeMode();
  
    const HomeMode();
  
negative.code:   void selectItem(HomeScreen home, int index);
  }
  
  /// Mode for putting an item into the home, equipment, or crucible.
  class PutHomeMode extends SelectHomeMode {
    const PutHomeMode();
  
    String get message => 'Put which item?';
  
    bool canSelectLeftItem(HomeScreen home, Item item) {
      // Can put anything in the home.
      if (home.rightView == HomeView.HOME) return true;
  
      // Can only put equippable items.
      if (home.rightView == HomeView.EQUIPMENT) {
        // TODO: This is a bit wonky. canEquip() assumes you can swap items,
        // which the home screen doesn't support.
        return home.save.equipment.canEquip(item);
      }
  