code: private static synchronized Forest init(String key, KV<String, Forest> kv, boolean reload) {
          Forest forest = kv.getV();
          if (forest != null) {
              if (reload) {
                  forest.clear();
              } else {
                  return forest;
              }
          } else {
              forest = new Forest();
          }
          try (BufferedReader br = IOUtil.getReader(PathToStream.stream(kv.getK()), "utf-8")) {
              String temp;
              LOG.debug("begin init ambiguity");
              long start = System.currentTimeMillis();
              while ((temp = br.readLine()) != null) {
                  if (StringUtil.isNotBlank(temp)) {
                      temp = StringUtil.trim(temp);
                      String[] split = temp.split("\t");
                      StringBuilder sb = new StringBuilder();
                      if (split.length % 2 != 0) {
                          LOG.error("init ambiguity  error in line :" + temp + " format err !");
                          continue;
                      }
                      for (int i = 0; i < split.length; i += 2) {
                          sb.append(split[i]);
                      }
                      forest.addBranch(sb.toString(), split);
                  }
              }
              LOG.info("load dic use time:" + (System.currentTimeMillis() - start) + " path is : " + kv.getK());
              kv.setV(forest);
              return forest;
          } catch (Exception e) {
              LOG.error("Init ambiguity library error :" + e.getMessage() + ", path: " + kv.getK());
              AMBIGUITY.remove(key);
              return null;
          }
      }
docs: 加载
  
  @return