@Nullable
  private static Value getTitleValue(@Nullable UExpression arg, @Nullable Set<? super UExpression> processed) {
    if (arg instanceof UInjectionHost) {
      return Value.of((UInjectionHost)arg);
    }
    if (arg instanceof UCallExpression call) {
      UExpression returnValue = StringFlowUtil.getReturnValue(call);
      if (arg.equals(returnValue)) {
        return null;
      }
      if (returnValue != null) {
        if (processed == null) {
          processed = new HashSet<>();
        }
        if (processed.add(returnValue)) {
          return getTitleValue(returnValue, processed);
        }
      }
      Value fromProperty = Value.of(getPropertyArgument(call), call.getValueArgumentCount() > 1);
      if (fromProperty != null) {
        return fromProperty;
      }
    }
    if (arg instanceof UResolvable) {
      PsiElement target = ((UResolvable)arg).resolve();
      if (target instanceof PsiModifierListOwner) {
        Value value = Value.of(NlsInfo.forModifierListOwner((PsiModifierListOwner)target));
        if (value != null) {
          return value;
        }
      }
      PsiType type = arg.getExpressionType();
      if (type != null) {
        return Value.of(NlsInfo.forType(type));
      }
    }
    return null;
  }
@Nullable
  private static Value getTitleValue(@Nullable UExpression arg, @Nullable Set<? super UExpression> processed)