anchor.diff:      );
     }
   
  -  bool _canHandleTouch(LineTouchResponse response, LineTouchData touchData) {
  -    return response != null && touchData != null && touchData.touchCallback != null;
  -  }
  -
     LineChartData _withTouchedIndicators(LineChartData lineChartData) {
  -    if (lineChartData == null) {
  -      return lineChartData;
  -    }
  -
       if (!lineChartData.lineTouchData.enabled || !lineChartData.lineTouchData.handleBuiltInTouches) {
         return lineChartData;
       }
  
positive.code:     return MouseRegion(
        onEnter: (e) {
          final chartSize = _getChartSize();
          if (chartSize == null) {
            return;
          }
  
          final LineTouchResponse response =
              _touchHandler?.handleTouch(FlPanStart(e.localPosition), chartSize);
          if (_canHandleTouch(response, touchData)) {
            touchData.touchCallback(response);
          }
        },
        onExit: (e) {
          final chartSize = _getChartSize();
          if (chartSize == null) {
            return;
          }
  
          final LineTouchResponse response =
              _touchHandler?.handleTouch(FlPanEnd(Offset.zero, Velocity.zero), chartSize);
          if (_canHandleTouch(response, touchData)) {
            touchData.touchCallback(response);
          }
        },
        onHover: (e) {
          final chartSize = _getChartSize();
          if (chartSize == null) {
            return;
          }
  
          final LineTouchResponse response =
              _touchHandler?.handleTouch(FlPanMoveUpdate(e.localPosition), chartSize);
          if (_canHandleTouch(response, touchData)) {
            touchData.touchCallback(response);
          }
        },
        child: GestureDetector(
          onLongPressStart: (d) {
            final chartSize = _getChartSize();
            if (chartSize == null) {
              return;
            }
  
            final LineTouchResponse response =
                _touchHandler?.handleTouch(FlLongPressStart(d.localPosition), chartSize);
            if (_canHandleTouch(response, touchData)) {
              touchData.touchCallback(response);
            }
          },
          onLongPressEnd: (d) {
            final chartSize = _getChartSize();
            if (chartSize == null) {
              return;
            }
  
            final LineTouchResponse response =
                _touchHandler?.handleTouch(FlLongPressEnd(d.localPosition), chartSize);
            if (_canHandleTouch(response, touchData)) {
              touchData.touchCallback(response);
            }
          },
          onLongPressMoveUpdate: (d) {
            final chartSize = _getChartSize();
            if (chartSize == null) {
              return;
            }
  
            final LineTouchResponse response =
                _touchHandler?.handleTouch(FlLongPressMoveUpdate(d.localPosition), chartSize);
            if (_canHandleTouch(response, touchData)) {
              touchData.touchCallback(response);
            }
          },
          onPanCancel: () {
            final chartSize = _getChartSize();
            if (chartSize == null) {
              return;
            }
  
            final LineTouchResponse response = _touchHandler?.handleTouch(
                FlPanEnd(Offset.zero, const Velocity(pixelsPerSecond: Offset.zero)), chartSize);
            if (_canHandleTouch(response, touchData)) {
              touchData.touchCallback(response);
            }
          },
          onPanEnd: (DragEndDetails details) {
            final chartSize = _getChartSize();
            if (chartSize == null) {
              return;
            }
  
            final LineTouchResponse response =
                _touchHandler?.handleTouch(FlPanEnd(Offset.zero, details.velocity), chartSize);
            if (_canHandleTouch(response, touchData)) {
              touchData.touchCallback(response);
            }
          },
          onPanDown: (DragDownDetails details) {
            final chartSize = _getChartSize();
            if (chartSize == null) {
              return;
            }
  
            final LineTouchResponse response =
                _touchHandler?.handleTouch(FlPanStart(details.localPosition), chartSize);
            if (_canHandleTouch(response, touchData)) {
              touchData.touchCallback(response);
            }
          },
          onPanUpdate: (DragUpdateDetails details) {
            final chartSize = _getChartSize();
            if (chartSize == null) {
              return;
            }
  
            final LineTouchResponse response =
                _touchHandler?.handleTouch(FlPanMoveUpdate(details.localPosition), chartSize);
            if (_canHandleTouch(response, touchData)) {
              touchData.touchCallback(response);
            }
          },
          child: CustomPaint(
            key: _chartKey,
  
negative.code: class _LineChartState extends AnimatedWidgetBaseState<LineChart> {
    /// we handle under the hood animations (implicit animations) via this tween,
    /// it lerps between the old [LineChartData] to the new one.
    late LineChartDataTween _lineChartDataTween;
  
    TouchHandler<LineTouchResponse>? _touchHandler;
  
    final GlobalKey _chartKey = GlobalKey();
  
  