class BlockUnclesValidationRule implements BlockValidationRule {

    @Override
    public boolean isValid(Block block) {

        if (!blockValidationRule.isValid(block)) {
            return false;
        }

        List<BlockHeader> uncles = block.getUncleList();
        if (CollectionUtils.isNotEmpty(uncles) &&
                !validateUncleList(block.getNumber(), uncles,
                        FamilyUtils.getAncestors(blockStore, block, uncleGenerationLimit),
                        FamilyUtils.getUsedUncles(blockStore, block, uncleGenerationLimit))) {
            logger.warn("Uncles list validation failed");
            return false;
        }

        return true;
    }

    public  BlockUnclesValidationRule(UscSystemProperties config, BlockStore blockStore, int uncleListLimit,
                                     int uncleGenerationLimit, BlockValidationRule validations,
                                     BlockParentDependantValidationRule parentValidations);

}