anchor.diff:  
     void _onItemPressed(T node, int nodeIndex) {
       /// Rebuilds the table whenever the tree structure has been updated
  +    selectedNode = node;
  +    selectedNodeIndex = nodeIndex;
  +
  +    _toggleNode(node);
  +  }
  +
  +  void _toggleNode(T node) {
       setState(() {
  -      selectedNode = node;
  -      selectedNodeIndex = nodeIndex;
  -
         if (!node.isExpandable) return;
         animatingNode = node;
         List<T> nodeChildren;
  
positive.code:     }
      assert(selectedNode == items[selectedNodeIndex]);
  
      if (event.logicalKey == LogicalKeyboardKey.arrowDown ||
          event.logicalKey == LogicalKeyboardKey.arrowUp) {
        _moveSelection(event.logicalKey, scrollController, constraints.maxHeight);
      }
      // TODO(gmoothart): Add expand/collapse with left/right keys
    }
  
    void _moveSelection(
      LogicalKeyboardKey key,
      ScrollController scrollController,
      double viewportHeight,
    ) {
  
negative.code: 
      if (isBelowViewport) {
        // Scroll so selected row is the last full item displayed in the viewport.
        // To do this we need to be showing the (minCompleteItemsInView + 1)
        // previous item  at the top.
        scrollController.animateTo(
          (newSelectedNodeIndex - minCompleteItemsInView + 1) *
              _Table.defaultRowHeight,
          duration: defaultDuration,
          curve: defaultCurve,
  