public @Nullable List<VcsRevisionNumber> getRevisionNumbers(@NotNull DataProvider dataProvider) {
    VcsRevisionNumber revisionNumber = VcsDataKeys.VCS_REVISION_NUMBER.getData(dataProvider);
    if (revisionNumber != null) {
      return Collections.singletonList(revisionNumber);
    }

    ChangeList[] changeLists = VcsDataKeys.CHANGE_LISTS.getData(dataProvider);
    if (changeLists != null && changeLists.length > 0) {
      List<CommittedChangeList> committedChangeLists = new ArrayList<>(ContainerUtil.findAll(changeLists, CommittedChangeList.class));

      if (!committedChangeLists.isEmpty()) {
        ContainerUtil.sort(committedChangeLists, CommittedChangeListByDateComparator.DESCENDING);

        return ContainerUtil.mapNotNull(committedChangeLists, CommittedChangeListToRevisionNumberFunction.INSTANCE);
      }
    }

    VcsFileRevision[] fileRevisions = VcsDataKeys.VCS_FILE_REVISIONS.getData(dataProvider);
    if (fileRevisions != null) {
      List<VcsFileRevision> revisions = ContainerUtil.filter(fileRevisions, r -> r != VcsFileRevision.NULL);
      if (!revisions.isEmpty()) {
        return ContainerUtil.mapNotNull(fileRevisions, FileRevisionToRevisionNumberFunction.INSTANCE);
      }
    }

    return null;
  }
public @Nullable List<VcsRevisionNumber> getRevisionNumbers(@NotNull DataProvider dataProvider)