@Nonnull
    @Override
    public Optional<Mode> parse(
            @Nullable final String str, @Nonnull final DetectionLocation detectionLocation) {
        if (str == null) {
            return Optional.empty();
        }
        // get explicit block size
        Optional<BlockSize> optionalBlockSize =
                Utils.extractNumberFormString(str)
                        .map(blockSizeStr -> new BlockSize(blockSizeStr, detectionLocation));
        // remove numeric values
        String modeString = str.replaceAll("\\d", "");
        return map(modeString, detectionLocation)
                .map(
                        mode -> {
                            optionalBlockSize.ifPresent(mode::put);
                            return mode;
                        });
    }
@Test
    void base() {
        DetectionLocation testDetectionLocation =
                new DetectionLocation("testfile", 1, 1, List.of("test"), () -> "SSL");

        JcaModeMapper jcaModeMapper = new JcaModeMapper();
        Optional<Mode> modeOptional = jcaModeMapper.parse("CCM", testDetectionLocation);

        assertThat(modeOptional).isPresent();
        assertThat(modeOptional.get()).isInstanceOf(CCM.class);
        assertThat(modeOptional.get().getBlockSize()).isEmpty();
    }