private void processInjectionWithContext(BaseInjection injection, boolean settingsAvailable) {
      Language language = InjectorUtils.getLanguage(injection);
      if (language == null) return;

      String languageID = language.getID();
      List<InjectionInfo> list = new ArrayList<>();

      boolean unparsable = false;

      StringBuilder prefix = new StringBuilder();
      //String suffix = "";
      for (int i = 0; i < myOperands.length; i++) {
        PsiElement operand = myOperands[i];
        final ElementManipulator<PsiElement> manipulator = ElementManipulators.getManipulator(operand);
        if (manipulator == null) {
          unparsable = true;
          prefix.append(getStringPresentation(operand));
          if (i == myOperands.length - 1) {
            InjectionInfo last = ContainerUtil.getLastItem(list);
            if (last != null) {
              InjectedLanguage injected = last.language();
              list.set(list.size() - 1, new InjectionInfo(last.host(), InjectedLanguage.create(injected.getID(), injected.getPrefix(),
                                                                                               prefix.toString(), false), last.range()));
            }
          }
        }
        else if (operand instanceof PsiLanguageInjectionHost host) {
          InjectedLanguage injectedLanguage = InjectedLanguage.create(languageID, prefix.toString(), "", false);
          TextRange range = manipulator.getRangeInElement(host);
          list.add(new InjectionInfo(host, injectedLanguage, range));
          prefix.setLength(0);
        }
      }

      if (!list.isEmpty()) {
        processInjection(language, list, settingsAvailable, unparsable);
      }
    }
private void processInjectionWithContext(BaseInjection injection, boolean settingsAvailable)