anchor.diff:  
     final StreamController<TimelineFrame> _frameCompleteController =
         StreamController<TimelineFrame>.broadcast();
  +
     Stream<TimelineFrame> get onFrameCompleted => _frameCompleteController.stream;
   
     /// Frames we are in the process of assembling.
  
positive.code:   int get duration => (endTime != null) ? endTime - startTime : null;
  
    bool get isCpuEvent => type == TimelineEventType.cpu;
    bool get isGpuEvent => type == TimelineEventType.gpu;
  
    bool get isCpuEventFlow => _hasChild('Engine::BeginFrame');
    bool get isGpuEventFlow => _hasChild('PipelineConsume');
  
    /// Depth of this TimelineEvent tree, including [this].
  
negative.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;
  