anchor.diff:      _scrollControllerX.dispose();
       _scrollControllerY.dispose();
       constraintDisplayController?.dispose();
  +    _focusNode.dispose();
  +  }
  +
  +  @override
  +  void requestFocus() {
  +    _focusNode.requestFocus();
     }
   
     void _onScrollYChange() {
  
positive.code: import 'package:flutter/foundation.dart';
  import 'package:flutter/material.dart';
  import 'package:pedantic/pedantic.dart';
  
  import '../../flutter/auto_dispose_mixin.dart';
  import '../../flutter/collapsible_mixin.dart';
  
negative.code:     return maxOffset - viewportDimension;
    }
  
    /// Handle arrow keys for the InspectorTree. Ignore other key events so that
    /// other widgets have a chance to respond to them.
    bool _handleKeyEvent(FocusNode _, RawKeyEvent event) {
      if (event is! RawKeyDownEvent) return false;
  
      if (event.logicalKey == LogicalKeyboardKey.arrowDown) {
        controller.navigateDown();
        return true;
      } else if (event.logicalKey == LogicalKeyboardKey.arrowUp) {
        controller.navigateUp();
        return true;
      } else if (event.logicalKey == LogicalKeyboardKey.arrowLeft) {
        controller.navigateLeft();
        return true;
      } else if (event.logicalKey == LogicalKeyboardKey.arrowRight) {
        controller.navigateRight();
        return true;
      }
  
      return false;
    }
  
    void _bindToController() {
      controller?.client = this;
    }
  