@Override
  public final @Nullable TypeConversionDescriptorBase findConversion(@Nullable PsiType from,
                                                                     @Nullable PsiType to,
                                                                     PsiMember member,
                                                                     PsiExpression context,
                                                                     TypeMigrationLabeler labeler) {
    if (from != null && to != null && !canConvert(from, to, ruleFromClass(), ruleToClass())) {
      return null;
    }
    if (member instanceof PsiMethod method) {
      final String methodName = method.getName();
      final PsiClass aClass = method.getContainingClass();
      if (isValidMethodQualifierToConvert(aClass)) {
        final TypeConversionDescriptorBase descriptor = simpleDescriptors.get().get(methodName);
        if (descriptor != null) {
          return descriptor;
        }
      }
      TypeConversionDescriptorBase conversionForMethod = findConversionForMethod(from, to, method, methodName, context, labeler);
      return conversionForMethod != null ? conversionForMethod : getUnknownMethodConversion();
    } else if (context instanceof PsiNewExpression) {
      final PsiAnonymousClass anonymousClass = ((PsiNewExpression)context).getAnonymousClass();
      return anonymousClass == null ? null : findConversionForAnonymous(anonymousClass, labeler.getSettings(GuavaConversionSettings.class));
    }
    else if (context instanceof PsiMethodReferenceExpression) {
      final PsiType methodReferenceType = context.getType();
      if (methodReferenceType != null && to != null && to.isAssignableFrom(methodReferenceType)) {
        return new TypeConversionDescriptorBase();
      }
    }
    else {
      if (context instanceof PsiReferenceExpression) {
        final PsiElement resolvedElement = ((PsiReferenceExpression)context).resolve();
        if (resolvedElement instanceof PsiVariable) {
          return findConversionForVariableReference(context);
        }
      }
    }
    return null;
  }
@Override
  public final @Nullable TypeConversionDescriptorBase findConversion(@Nullable PsiType from,
                                                                     @Nullable PsiType to,
                                                                     PsiMember member,
                                                                     PsiExpression context,
                                                                     TypeMigrationLabeler labeler)