public synchronized Set<String> getClassesForComponentId(final short terminologyComponentId) { if (UNSPECIFIED_NUMBER_SHORT == terminologyComponentId) { return Collections.emptySet(); } final Set<String> classes = SHORT_TO_CLASS_CACHE.get(terminologyComponentId); if (!CompareUtils.isEmpty(classes)) { return classes; } final Set<String> representationClasses = getClassesForComponentId(getTerminologyComponentId(terminologyComponentId)); for (String representationClass : representationClasses) { SHORT_TO_CLASS_CACHE.put(terminologyComponentId, representationClass); } return SHORT_TO_CLASS_CACHE.get(terminologyComponentId); }