AutomaticListTypeConverter extends AbstractListTypeConverter { @Override public boolean canConvert(Type realToType, Type realDomainType) { Class<?> toClass = TypeUtil.getRawClass(realToType); Class<?> domainClass = TypeUtil.getRawClass(realDomainType); if (!List.class.isAssignableFrom(toClass) || !List.class.isAssignableFrom(domainClass)) { return false; } Class<?> paramRealToType = TypeUtil.getFirstTypeArgument(realToType); Class<?> paramRealDomainType = TypeUtil.getFirstTypeArgument(realDomainType); if (paramRealToType == null || paramRealDomainType == null) { return false; } return (getJTransfo().isToClass(paramRealToType) && paramRealDomainType.isAssignableFrom(getJTransfo().getDomainClass(paramRealToType))) || (isPrimitiveOrString(paramRealToType) && paramRealDomainType == paramRealToType); } AutomaticListTypeConverter();  AutomaticListTypeConverter(String name);  AutomaticListTypeConverter(JTransfo jTransfo); @Override boolean canConvert(Type realToType, Type realDomainType); Object doConvertOne(JTransfo jTransfo, Object toObject, Class<?> domainObjectType, String... tags); @Override Object doReverseOne(
            JTransfo jTransfo, Object domainObject, SyntheticField toField, Class<?> toType, String... tags);  }
@Test public void testCanConvert() throws Exception { AutomaticListTypeConverter typeConverter = new AutomaticListTypeConverter(jTransfo); assertThat(typeConverter.canConvert(List.class, List.class)).isFalse(); }