docs: public String __toString() 
      {
          StringBuilder sb = new StringBuilder();
          sb.append(value);
          sb.append('/');
          //append the cx
          if ( partspeech != null ) {
              for ( int j = 0; j < partspeech.length; j++ ) {
                  if ( j == 0 ) {
                      sb.append(partspeech[j]);
                  } else {
                      sb.append(',');
                      sb.append(partspeech[j]);
                  }
              }
          } else {
              sb.append("null");
          }
          
          sb.append('/');
          sb.append(pinyin);
          sb.append('/');
          
          if ( syn != null ) {
              List<IWord> synsList = syn.getList();
              synchronized ( synsList ) {
                  for ( int i = 0; i < synsList.size(); i++ ) {
                      if ( i == 0 ) {
                          sb.append(synsList.get(i));
                      } else {
                          sb.append(',');
                          sb.append(synsList.get(i));
                      }
                  }
              }
          } else {
              sb.append("null");
          }
          
          if ( value.length() == 1 ) {
              sb.append('/');
              sb.append(fre);
          }
          
          if ( entity != null ) {
              sb.append('/');
              sb.append(ArrayUtil.implode("|", entity));
          }
          
          if ( parameter != null ) {
              sb.append('/');
              sb.append(parameter);
          }
          
          return sb.toString();
      }