public static DetermineCommonAncestorTask create(
      final ProtocolSchedule protocolSchedule,
      final ProtocolContext protocolContext,
      final EthContext ethContext,
      final EthPeer peer,
      final int headerRequestSize,
      final SynchronizerConfiguration synchronizerConfiguration,
      final MetricsSystem metricsSystem) {
    return new DetermineCommonAncestorTask(
        protocolSchedule,
        protocolContext,
        ethContext,
        peer,
        headerRequestSize,
        synchronizerConfiguration,
        metricsSystem);
  }
Finds the common ancestor with the given peer. It is assumed that the peer will at least share
the same genesis block with this node. Running this task against a peer with a non-matching
genesis block will result in undefined behavior: the task may complete exceptionally or in some
cases this node's genesis block will be returned.
ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTask.java