def METHOD_NAME(self):
    # Generate shared state up to the network split
    logging.info("Generating initial blocks.")
    self.nodes[0].generate(13)
    block14 = self.nodes[0].generate(1)[0]
    logging.info("Syncing network after initial generation...")
    self.sync_all() # Everyone is still on overwinter
    logging.info("Checking overwinter block propagation.")
    assert_equal(self.nodes[0].getbestblockhash(), block14)
    assert_equal(self.nodes[1].getbestblockhash(), block14)
    assert_equal(self.nodes[2].getbestblockhash(), block14)
    logging.info("All nodes are on overwinter.")
    logging.info("Generating network split...")
    self.is_network_split=True 
    # generate past the boundary into sapling; this will become the "canonical" branch
    self.nodes[0].generate(50) 
    expected = self.nodes[0].getbestblockhash()
    # generate blocks into sapling beyond the maximum rewind length (99 blocks)
    self.nodes[2].generate(120) 
    self.sync_all()
    assert_true(expected != self.nodes[2].getbestblockhash(), "Split chains have not diverged!")
    # Stop the overwinter node to ensure state is flushed to disk.
    logging.info("Shutting down lagging node...")
    self.nodes[2].stop()
    bitcoind_processes[2].wait()
    # Restart the nodes, reconnect, and sync the network. This succeeds if "-reindex" is passed.
    logging.info("Reconnecting the network...")
    # expect an exception; the node will refuse to fully start because its last point of
    # agreement with the rest of the network was prior to the network upgrade activation
    assert_start_raises_init_error(2, self.options.tmpdir, HAS_SAPLING, "roll back 120")
    # restart the node with -reindex to allow the test to complete gracefully,
    # otherwise the node shutdown call in test cleanup will throw an error since
    # it can't connect
    self.nodes[2] = start_node(2, self.options.tmpdir, extra_args=NO_SAPLING + ["-reindex"])