public GenericConverter find(Class<?> sourceType, Class<?> targetType) {
			List<Class<?>> sourceCandidates = getTypeHierarchy(sourceType);
			List<Class<?>> targetCandidates = getTypeHierarchy(targetType);
			for (Class<?> sourceCandidate : sourceCandidates) {
				for (Class<?> targetCandidate : targetCandidates) {
					GenericConverter converter = getRegisteredConverter(sourceType, targetType, sourceCandidate, targetCandidate);
					if (converter != null) {
						return converter;
					}
				}
			}
			return null;
		}