docs: @Override
    public final Object convert(final Map<String, Object> pAddParam,
      final IRecordSet<RS> pFrom, final String pName) throws Exception {
      Class fieldClass = (Class) pAddParam.get("fieldClass");
      Class entityClass = (Class) pAddParam.get("entityClass");
      @SuppressWarnings("unchecked")
      List<String> foreignFieldNms = (List<String>)
        pAddParam.get("foreignFieldNms");
      @SuppressWarnings("unchecked")
      List<Integer> currentLevel = (List<Integer>) pAddParam.get("currentLevel");
      @SuppressWarnings("unchecked")
      List<Integer> deepLevel = (List<Integer>) pAddParam.get("deepLevel");
      currentLevel.set(0, currentLevel.get(0) + 1);
      Object entity = convertOnlyId(pAddParam, pFrom, pName, fieldClass,
        entityClass, currentLevel, deepLevel, foreignFieldNms);
      // it's may be enter into recursion:
      if (entity != null && deepLevel.get(deepLevel.size() - 1) != 1
        && currentLevel.get(currentLevel.size() - 1)
        <= deepLevel.get(deepLevel.size() - 1)) {
        if (currentLevel.size() > 1) {
          currentLevel.set(currentLevel.size() - 1,
            currentLevel.get(currentLevel.size() - 1) + 1);
        }
        fillerObjectsFromRs.fill(pAddParam, entity, pFrom);
        // exit form recursion:
        if (currentLevel.size() > 1) {
          //exit from overridden sub-entity deep:
          currentLevel.set(currentLevel.size() - 1,
            currentLevel.get(currentLevel.size() - 1) - 1);
        }
      }
      if (currentLevel.size() > 1
          && currentLevel.get(currentLevel.size() - 1) == 1) {
        currentLevel.remove(currentLevel.size() - 1);
        deepLevel.remove(deepLevel.size() - 1);
      }
      foreignFieldNms.remove(foreignFieldNms.size() - 1); //remove current
      currentLevel.set(0, currentLevel.get(0) - 1);
      return entity;
    }