public <T> T convert(String property, Class<T> targetClass) {
        final AbstractPropertyConverter<?> converter = converterRegistry.get(targetClass);
        if (converter == null) {
            throw new MissingFormatArgumentException("converter not found, can't convert from String to " + targetClass.getCanonicalName());
        }
        return (T) converter.convert(property);
    }
@Test
    void testConvertLong() {
        assertEquals(100L, (long) compositeConverter.convert("100", Long.class));
        assertEquals(Long.MAX_VALUE, (long) compositeConverter.convert(String.valueOf(Long.MAX_VALUE), Long.class));
        assertEquals(Long.MIN_VALUE, (long) compositeConverter.convert(String.valueOf(Long.MIN_VALUE), Long.class));
    }