anchor.diff:        titlesData: titlesData ?? this.titlesData,
         axisTitleData: axisTitleData ?? this.axisTitleData,
         extraLinesData: extraLinesData ?? this.extraLinesData,
  +      rangeAnnotations: rangeAnnotations ?? this.rangeAnnotations,
         lineTouchData: lineTouchData ?? this.lineTouchData,
         showingTooltipIndicators: showingTooltipIndicators ?? this.showingTooltipIndicators,
         gridData: gridData ?? this.gridData,
  
positive.code:     FlTitlesData titlesData,
      FlAxisTitleData axisTitleData,
      ExtraLinesData extraLinesData,
      LineTouchData lineTouchData,
      List<MapEntry<int, List<LineBarSpot>>> showingTooltipIndicators,
      FlGridData gridData,
  
negative.code:   }
  }
  
  /// HorizontalRangeAnnotation
  class HorizontalRangeAnnotation {
    final double y1;
    final double y2;
    final Color color;
  
    HorizontalRangeAnnotation({
      this.y1,
      this.y2,
      this.color = Colors.white,
    });
  }
  
  /// VerticalRangeAnnotation
  class VerticalRangeAnnotation {
    final double x1;
    final double x2;
    final Color color;
  
    VerticalRangeAnnotation({
      this.x1,
      this.x2,
      this.color = Colors.white,
    });
  }
  
  /// RangeAnnotations
  class RangeAnnotations {
    final bool hasHorizonalRangeAnnotations;
    final bool hasVerticalRangeAnnotations;
    final List<HorizontalRangeAnnotation> horizontalRangeAnnotations;
    final List<VerticalRangeAnnotation> verticalRangeAnnotations;
  
    const RangeAnnotations({
      this.hasHorizonalRangeAnnotations = false,
      this.hasVerticalRangeAnnotations = false,
      this.horizontalRangeAnnotations = const [],
      this.verticalRangeAnnotations = const [],
    });
  }
  
  /// if user touched the chart, we indicate the touched spots with a below line,
  /// and make a bigger dot on that spot,
  /// here we get the [TouchedSpotIndicatorData] from the given [LineTouchedSpot].
  