List<ReferenceTransferableData> (@NotNull PsiFile file, @NotNull Editor editor, int @NotNull [] startOffsets, int @NotNull [] endOffsets) { if (CodeInsightSettings.getInstance().ADD_IMPORTS_ON_PASTE == CodeInsightSettings.NO) { return Collections.emptyList(); } if (!(file instanceof PsiClassOwner)) { return Collections.emptyList(); } ArrayList<ReferenceData> array = new ArrayList<>(); int refOffset = 0; // this is an offset delta for conversion from absolute offset to an offset inside clipboard contents for (int j = 0; j < startOffsets.length; j++) { refOffset += startOffsets[j]; for (PsiElement element : CollectHighlightsUtil.getElementsInRange(file, startOffsets[j], endOffsets[j])) { addReferenceData(file, refOffset, element, array); } refOffset -= endOffsets[j] + 1; // 1 accounts for line break inserted between contents corresponding to different carets } if (array.isEmpty()) { return Collections.emptyList(); } return Collections.singletonList(new ReferenceTransferableData(array.toArray(new ReferenceData[0]))); }