docs: public final <T extends AItemSpecifics<?, ?>> List<T>
      retrieveItemSpecificsList(final Map<String, Object> pRqVs,
        final TradingSettings pTs, final Long pItemId, final Class<T> pItemSpecCl,
          final String pItemSn) throws Exception {
      //HTML templates full
      pRqVs.put(pItemSpecCl.getSimpleName() + "specificsdeepLevel", 3);
      HashSet<String> goodsFldNms = new HashSet<String>();
      goodsFldNms.add("itsId");
      goodsFldNms.add("itsName");
      pRqVs.put(pItemSn + "neededFields", goodsFldNms);
      HashSet<String> soiFldNms = new HashSet<String>();
      soiFldNms.add("itsId");
      soiFldNms.add("itsName");
      soiFldNms.add("isShowInList");
      soiFldNms.add("itsType");
      soiFldNms.add("itsGroop");
      soiFldNms.add("tempHtml");
      pRqVs.put("SpecificsOfItemneededFields", soiFldNms);
      HashSet<String> soigFldNms = new HashSet<String>();
      soigFldNms.add("itsId");
      soigFldNms.add("itsName");
      soigFldNms.add("templateStart");
      soigFldNms.add("templateEnd");
      soigFldNms.add("templateDetail");
      pRqVs.put("SpecificsOfItemGroupneededFields", soigFldNms);
      HashSet<String> htmTmFldNms = new HashSet<String>();
      htmTmFldNms.add("itsId");
      htmTmFldNms.add("htmlTemplate");
      pRqVs.put("HtmlTemplateneededFields", htmTmFldNms);
      List<T> result = null;
      if (pTs.getUseAdvancedI18n()) {
        String lang = (String) pRqVs.get("lang");
        String langDef = (String) pRqVs.get("langDef");
        if (!lang.equals(langDef)) {
          String qd;
          if (pItemSpecCl == GoodsSpecifics.class) {
            qd = lazyGetQuItSpDeIn().replace(":TITSPEC", "GOODSSPECIFICS")
              .replace(":TITEM", "SESERVICE").replace(":T18NIT", "I18NSESERVICE")
                .replace(":ITEMID", pItemId.toString()).replace(":LANG", lang);
          } else if (pItemSpecCl == ServiceSpecifics.class) {
            qd = lazyGetQuItSpDeIn().replace(":TITSPEC", "SERVICESPECIFICS")
              .replace(":TITEM", "SESERVICE").replace(":T18NIT", "I18NSESERVICE")
                .replace(":ITEMID", pItemId.toString()).replace(":LANG", lang);
          } else if (pItemSpecCl == SeGoodsSpecifics.class) {
            qd = lazyGetQuItSpDeIn().replace(":TITSPEC", "SEGOODSSPECIFICS")
              .replace(":TITEM", "SESERVICE").replace(":T18NIT", "I18NSESERVICE")
                .replace(":ITEMID", pItemId.toString()).replace(":LANG", lang);
          } else if (pItemSpecCl == SeServiceSpecifics.class) {
            qd = lazyGetQuItSpDeIn().replace(":TITSPEC", "SESERVICESPECIFICS")
              .replace(":TITEM", "SESERVICE").replace(":T18NIT", "I18NSESERVICE")
                .replace(":ITEMID", pItemId.toString()).replace(":LANG", lang);
          } else {
            throw new Exception("NYI for " +  pItemSpecCl);
          }
          result = getSrvOrm().retrieveListByQuery(pRqVs,
            pItemSpecCl, qd);
        }
      }
      if (result == null) {
        result = getSrvOrm().retrieveListWithConditions(pRqVs,
          pItemSpecCl, " where " + pItemSpecCl.getSimpleName()
            .toUpperCase() + ".ITEM=" + pItemId + " order by SPECIFICS.ITSINDEX");
      }
      pRqVs.remove(pItemSpecCl.getSimpleName() + "specificsdeepLevel");
      pRqVs.remove(pItemSn + "neededFields");
      pRqVs.remove("SpecificsOfItemneededFields");
      pRqVs.remove("SpecificsOfItemGroupneededFields");
      pRqVs.remove("HtmlTemplateneededFields");
      return result;
    }