@Override
  public BlockProcessingResult validateAndProcessBlock(
      final ProtocolContext context,
      final Block block,
      final HeaderValidationMode headerValidationMode,
      final HeaderValidationMode ommerValidationMode) {
    return validateAndProcessBlock(
        context, block, headerValidationMode, ommerValidationMode, true, true);
  }
Performs a full validation and processing of a block

@param context the {@link ProtocolContext}
@param block the block being validated and processed
@param headerValidationMode the {@link HeaderValidationMode} used for validating the header
@param ommerValidationMode the {@link HeaderValidationMode} used for validating the ommers
@return an optional containing the {@link BlockProcessingOutputs} with the output of processing
    the block, empty if the block was deemed invalid or couldn't be processed
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/MainnetBlockValidator.java