boolean isAvailable(@NotNull PsiElement origin) {
      C context = getContext(origin);
      if (context == null) return false;
      List<PsiElement> elements = getElements(context);
      if (elements.size() < MIN_ELEMENTS_COUNT) {
        return false;
      }
      SortingStrategy sortingStrategy = findSortingStrategy(elements);
      if (sortingStrategy == null) return false;
      Comparator<PsiElement> comparator = sortingStrategy.getComparator();
      return sortingStrategy.isSuitableElements(elements) && !Comparators.isInOrder(elements, comparator);
    }
boolean isAvailable(@NotNull PsiElement origin)