SmartPointerTracker (@NotNull VirtualFile file) { synchronized (myPhysicalTrackers) { SmartPointerTracker tracker = getTracker(file); if (tracker == null) { tracker = new SmartPointerTracker(); if (file instanceof LightVirtualFile) { file.putUserData(LIGHT_TRACKER_KEY, new WeakReference<>(tracker)); } else { myPhysicalTrackers.put(file, tracker); } } return tracker; } }