def METHOD_NAME(self):
    self.log.info("Generate blocks on the node with no required chainwork, and verify nodes 1 and 2 have no new headers in their headers tree")
    with self.nodes[1].assert_debug_log(expected_msgs=["[net] Ignoring low-work chain (height=14)"]), self.nodes[2].assert_debug_log(expected_msgs=["[net] Ignoring low-work chain (height=14)"]), self.nodes[3].assert_debug_log(expected_msgs=["Synchronizing blockheaders, height: 14"]):
        self.generate(self.nodes[0], NODE1_BLOCKS_REQUIRED-1, sync_fun=self.no_op)
    # Node3 should always allow headers due to noban permissions
    self.log.info("Check that node3 will sync headers (due to noban permissions)")
    def check_node3_chaintips(num_tips, tip_hash, height):
        node3_chaintips = self.nodes[3].getchaintips()
        assert len(node3_chaintips) == num_tips
        assert {
            'height': height,
            'hash': tip_hash,
            'branchlen': height,
            'status': 'headers-only',
        } in node3_chaintips
    check_node3_chaintips(2, self.nodes[0].getbestblockhash(), NODE1_BLOCKS_REQUIRED-1)
    for node in self.nodes[1:3]:
        chaintips = node.getchaintips()
        assert len(chaintips) == 1
        assert {
            'height': 0,
            'hash': '0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206',
            'branchlen': 0,
            'status': 'active',
        } in chaintips
    self.log.info("Generate more blocks to satisfy node1's minchainwork requirement, and verify node2 still has no new headers in headers tree")
    with self.nodes[2].assert_debug_log(expected_msgs=["[net] Ignoring low-work chain (height=15)"]), self.nodes[3].assert_debug_log(expected_msgs=["Synchronizing blockheaders, height: 15"]):
        self.generate(self.nodes[0], NODE1_BLOCKS_REQUIRED - self.nodes[0].getblockcount(), sync_fun=self.no_op)
    self.sync_blocks(self.nodes[0:2]) # node3 will sync headers (noban permissions) but not blocks (due to minchainwork)
    assert {
        'height': 0,
        'hash': '0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206',
        'branchlen': 0,
        'status': 'active',
    } in self.nodes[2].getchaintips()
    assert len(self.nodes[2].getchaintips()) == 1
    self.log.info("Check that node3 accepted these headers as well")
    check_node3_chaintips(2, self.nodes[0].getbestblockhash(), NODE1_BLOCKS_REQUIRED)
    self.log.info("Generate long chain for node0/node1/node3")
    self.generate(self.nodes[0], NODE2_BLOCKS_REQUIRED-self.nodes[0].getblockcount(), sync_fun=self.no_op)
    self.log.info("Verify that node2 and node3 will sync the chain when it gets long enough")
    self.sync_blocks()