@Override
  public Comparable weigh(final @NotNull PsiElement element, final @NotNull ProximityLocation location) {
    if (location.getPosition() == null || !(element instanceof PsiClass)) {
      return false;
    }
    if (isTooGeneral((PsiClass)element)) return false;

    Set<String> superClasses = PLACE_SUPER_CLASSES.getValue(location);
    if (superClasses.isEmpty()) {
      return false;
    }

    final PsiElement position = location.getPosition();
    PsiClass placeClass = findPlaceClass(element, position);
    if (placeClass == null) return false;

    PsiClass elementClass = placeClass;
    while (elementClass != null) {
      if (superClasses.contains(elementClass.getQualifiedName())) {
        return true;
      }
      elementClass = elementClass.getContainingClass();
    }

    return false;
  }
@Override
  public Comparable weigh(final @NotNull PsiElement element, final @NotNull ProximityLocation location)