anchor.diff:  
     // Timing info for CPU portion of the frame.
     int get cpuStartTime => _cpuEventFlow?.startTime;
  +
     int get cpuEndTime => cpuStartTime + cpuDuration;
  +
     int get cpuDuration => _cpuEventFlow?.duration;
  +
     double get cpuDurationMs => cpuDuration / 1000;
   
     // Timing info for GPU portion of the frame.
     int get gpuStartTime => _gpuEventFlow?.startTime;
  +
     int get gpuEndTime => gpuStartTime + gpuDuration;
  +
     int get gpuDuration => _gpuEventFlow?.duration;
  +
     double get gpuDurationMs => gpuDuration / 1000;
   
     bool get isCpuSlow => cpuDurationMs > targetMaxDuration / 2;
  +
     bool get isGpuSlow => gpuDurationMs > targetMaxDuration / 2;
   
     @override
  
positive.code:   /// Flow of events showing the GPU work for the frame.
    TimelineEvent get gpuEventFlow => _gpuEventFlow;
    TimelineEvent _gpuEventFlow;
    set gpuEventFlow(TimelineEvent e) {
      assert(_gpuEventFlow == null, 'gpuEventFlow already set');
      _gpuEventFlow = e;
  
negative.code:       ? max(gpuEndTime, _endTime)
        : _endTime;
    int _endTime;
  
    set endTime(int time) {
      assert(_endTime == null);
      _endTime = time;
    }
  
    bool get isWellFormed => _startTime != null && _endTime != null;
  