@Nullable
  public static IProperty getI18nProperty(@NotNull UInjectionHost injectionHost) {
    PsiElement sourcePsi = injectionHost.getSourcePsi();
    if (sourcePsi == null) return null;
    final Property property = (Property)sourcePsi.getUserData(CACHE);
    if (property == NULL) return null;
    if (property != null && isValid(property, injectionHost)) return property;
    if (isI18nProperty(injectionHost)) {
      final Iterable<PsiReference> references = UastLiteralUtils.getInjectedReferences(injectionHost);
      for (PsiReference reference : references) {
        if (reference instanceof PsiPolyVariantReference) {
          final ResolveResult[] results = ((PsiPolyVariantReference)reference).multiResolve(false);
          for (ResolveResult result : results) {
            final PsiElement element = result.getElement();
            if (element instanceof IProperty p) {
              sourcePsi.putUserData(CACHE, p);
              return p;
            }
          }
        }
        else {
          final PsiElement element = reference.resolve();
          if (element instanceof IProperty p) {
            sourcePsi.putUserData(CACHE, p);
            return p;
          }
        }
      }
    }
    return null;
  }
@Nullable
  public static IProperty getI18nProperty(@NotNull UInjectionHost injectionHost)