private void collectTypeConverters(MutableTypeMirror type, Set<ConverterTypeElement> converters, List<ConverterConstructorParameter> parameters) {
DtoType dtoType = processingEnv.getTransferObjectUtils().getDtoType(type);
ConverterTypeElement converter = dtoType.getConverter();
if (converter != null && !converters.contains(converter)) {
parameters.addAll(converter.getConverterParameters(parametersResolverProvider.getParameterResolver(UsageType.DEFINITION), ConverterInstancerType.SERVICE_CONVERETR_INSTANCER));
converters.add(converter);
if (dtoType.getKind().equals(MutableTypeKind.CLASS) || dtoType.getKind().equals(MutableTypeKind.INTERFACE)) {
for (MutableTypeVariable typeVariable: ((MutableDeclaredType)dtoType).getTypeVariables()) {
for (MutableTypeMirror lowerBound: typeVariable.getLowerBounds()) {
collectTypeConverters(lowerBound, converters, parameters);
}
for (MutableTypeMirror upperBound: typeVariable.getUpperBounds()) {
collectTypeConverters(upperBound, converters, parameters);
}
}
}
}
}