code: public boolean insert(String key, int value, boolean overwrite)
      {
          if ((null == key) || key.length() == 0 || (key.indexOf(UNUSED_CHAR) != -1))
          {
              return false;
          }
          if ((value < 0) || ((value & LEAF_BIT) != 0))
          {
              return false;
          }
  
          value = setLeafValue(value);
  
          int[] ids = this.charMap.toIdList(key + UNUSED_CHAR);
  
          int fromState = 1; // 根节点的index为1
          int toState = 1;
          int index = 0;
          while (index < ids.length)
          {
              int c = ids[index];
              toState = getBase(fromState) + c; // to = base[from] + c
              expandArray(toState);
  
              if (isEmpty(toState))
              {
                  deleteFreeLink(toState);
  
                  setCheck(toState, fromState); // check[to] = from
                  if (index == ids.length - 1)  // Leaf
                  {
                      ++this.size;
                      setBase(toState, value);  // base[to] = value
                  }
                  else
                  {
                      int nextChar = ids[(index + 1)];
                      setBase(toState, getNextFreeBase(nextChar)); // base[to] = free_state - c
                  }
              }
              else if (getCheck(toState) != fromState) // 冲突
              {
                  solveConflict(fromState, c);
                  continue;
              }
              fromState = toState;
              ++index;
          }
          if (overwrite)
          {
              setBase(toState, value);
          }
          return true;
      }
docs: 插入条目
  
  @param key       键
  @param value     值
  @param overwrite 是否覆盖
  @return