docs: public String getSoilID(Map soilData) {
  
          String hash = getObjectOr(soilData, "soil_id", "");
  
          if (hashToName.containsKey(hash)) {
              return hashToName.get(hash);
          } else {
              String soil_id;
              if (hash.length() > 10) {
                  soil_id = hash.substring(0, 6) + "0001";
              } else if (hash.equals("")) {
                  soil_id = "AGMIP_0001";
              } else {
                  soil_id = hash;
                  while (soil_id.length() < 10) {
                      soil_id += "_";
                  }
              }
              int count;
              while (names.contains(soil_id)) {
                  try {
                      count = Integer.parseInt(soil_id.substring(6, soil_id.length()));
                      count++;
                  } catch (Exception e) {
                      count = 1;
                  }
                  soil_id = soil_id.substring(0, 6) + String.format("%04d", count);
              }
              names.add(soil_id);
              if (hash.equals("")) {
                  hash = soil_id;
              }
              hashToName.put(hash, soil_id);
              return soil_id;
          }
      }