@Nullable
  public static String getCallableReferenceClassFqn(@NotNull UCallableReferenceExpression expression) {
    //TODO why getQualifierType() -> null for Java?
    String classFqn = getTypeClassFqn(expression.getQualifierType());
    if (classFqn != null) return classFqn;

    UExpression qualifierExpression = expression.getQualifierExpression();
    if (qualifierExpression == null) return null;
    if (qualifierExpression instanceof UReferenceExpression) {
      PsiElement resolved = ((UReferenceExpression)qualifierExpression).resolve();
      if (resolved instanceof PsiClass) {
        return ((PsiClass)resolved).getQualifiedName();
      }
      else if (resolved instanceof PsiVariable) {
        return getTypeClassFqn(((PsiVariable)resolved).getType());
      }
    }
    else if (qualifierExpression instanceof UThisExpression) {
      return getTypeClassFqn(qualifierExpression.getExpressionType());
    }
    return null;
  }
@Nullable
  public static String getCallableReferenceClassFqn(@NotNull UCallableReferenceExpression expression)