GroupingElement (String groupName, Object data, VirtualFile file) { synchronized (myLock) { GroupingElement element = myGroupNameToElementMap.get(groupName); if (element != null) { return element; } element = createGroupingElement(groupName, data, file); myGroupNames.add(groupName); myGroupNameToElementMap.put(groupName, element); return element; } }