@Contract("null, _ -> false")
  public static boolean isStrTemplate(@Nullable PsiExpression processor, boolean allowUnresolved) {
    processor = PsiUtil.skipParenthesizedExprDown(processor);
    if (!(processor instanceof PsiReferenceExpression)) {
      return false;
    }
    PsiReferenceExpression referenceExpression = (PsiReferenceExpression)processor;
    if (!"STR".equals(referenceExpression.getReferenceName())) {
      return false;
    }
    PsiElement target = referenceExpression.resolve();
    if (allowUnresolved && target == null && referenceExpression.getQualifierExpression() == null) {
      return true;
    }
    if (!(target instanceof PsiField)) {
      return false;
    }
    PsiField field = (PsiField)target;
    PsiClass containingClass = field.getContainingClass();
    return containingClass != null && JAVA_LANG_STRING_TEMPLATE.equals(containingClass.getQualifiedName());
  }
@Contract("null, _ -> false")
  public static boolean isStrTemplate(@Nullable PsiExpression processor, boolean allowUnresolved)