anchor.diff:                horizontalGuidelineStartX = newVerticalGuidelineX;
               }
   
  +            FlameChartNode previousSiblingInRow(FlameChartNode child) {
  +              final previousNodeIndex = child.row.nodes.indexOf(child) - 1;
  +              final previousNode = previousNodeIndex >= 0
  +                  ? child.row.nodes[previousNodeIndex]
  +                  : null;
  +              final isSibling = previousNode?.data?.parent == node.data;
  +              return isSibling ? previousNode : null;
  +            }
  +
               if (childNode.row.index == node.row.index + 1) {
  -              final previousChildIndex =
  -                  childNode.row.nodes.indexOf(childNode) - 1;
  -              final previousNode = childNode.row.nodes[previousChildIndex];
  -              generateSubsequentVerticalGuideline(previousNode.rect.right);
  +              FlameChartNode previousSibling = previousSiblingInRow(childNode);
  +              // Look back until we find the first sibling in this row that is
  +              // not an instant event (if present).
  +              while (previousSibling != null &&
  +                  (previousSibling.data as AsyncTimelineEvent)
  +                      .isAsyncInstantEvent) {
  +                previousSibling = previousSiblingInRow(previousSibling);
  +              }
  +              if (previousSibling != null) {
  +                generateSubsequentVerticalGuideline(previousSibling.rect.right);
  +              }
               }
   
               final horizontalGuidelineEndX = childNode.rect.left;
  
positive.code:             double horizontalGuidelineStartX = verticalGuidelineX;
  
              final child = event.children[i];
              final childNode = chartNodesByEvent[child];
  
              // Helper method to generate a vertical guideline for subsequent
  
negative.code:             Offset(verticalGuidelineX, verticalGuidelineEndY),
            ));
  
            // Draw the horizontal guideline to the first child event that is not
            // an instant event, since it is guaranteed to be connected to
            // the main vertical we just created.
            final firstChild = event.children
                .firstWhere((TimelineEvent e) => !e.isAsyncInstantEvent);
            final horizontalGuidelineEndX =
                chartNodesByEvent[firstChild].rect.left;
            final horizontalGuidelineY =
  