/*     */ boolean isEncodable(Chunking chunking, StringBuilder sb) /*     */ {
   /* 197 */ if (!this.mBioCodec.isEncodable(chunking, sb)) /* 198 */ return false;
   /* 199 */ Tagging tagging = this.mBioCodec.toTagging(chunking);
   /* 200 */ String lastTag = "O";
   /* 201 */ for (String tag : tagging.tags()) {
     /* 202 */ if (startSameType(lastTag, tag)) {
       /* 203 */ if (sb != null) {
         /* 204 */ sb.append("Two consectuive chunks of type " + tag.substring(2));
         /*     */ }
       /* 206 */ return false;
       /*     */ }
     /* 208 */ lastTag = tag;
     /*     */ }
   /* 210 */ return true;
   /*     */ }
    public Map<String, ? extends Number> nodeFeatures(int n) {
      ObjectToDoubleMap<String> feats = new ObjectToDoubleMap<String>();

      boolean bos = n == 0;
      boolean eos = (n + 1) >= numTokens();

      String tokenCat = tokenCat(n);
      String prevTokenCat = bos ? null : tokenCat(n - 1);
      String nextTokenCat = eos ? null : tokenCat(n + 1);

      String token = normedToken(n);
      String prevToken = bos ? null : normedToken(n - 1);
      String nextToken = eos ? null : normedToken(n + 1);

      String posTag = mPosTagging.tag(n);
      String prevPosTag = bos ? null : mPosTagging.tag(n - 1);
      String nextPosTag = eos ? null : mPosTagging.tag(n + 1);

      if (bos) feats.set("BOS", 1.0);
      if (eos) feats.set("EOS", 1.0);
      if (!bos && !eos) feats.set("!BOS!EOS", 1.0);

      feats.set("TOK_" + token, 1.0);
      if (!bos) feats.set("TOK_PREV_" + prevToken, 1.0);
      if (!eos) feats.set("TOK_NEXT_" + nextToken, 1.0);

      feats.set("TOK_CAT_" + tokenCat, 1.0);
      if (!bos) feats.set("TOK_CAT_PREV_" + prevTokenCat, 1.0);
      if (!eos) feats.set("TOK_CAT_NEXT_" + nextToken, 1.0);

      feats.set("POS_" + posTag, 1.0);
      if (!bos) feats.set("POS_PREV_" + prevPosTag, 1.0);
      if (!eos) feats.set("POS_NEXT_" + nextPosTag, 1.0);

      for (String suffix : suffixes(token)) feats.set("SUFF_" + suffix, 1.0);
      if (!bos) for (String suffix : suffixes(prevToken)) feats.set("SUFF_PREV_" + suffix, 1.0);
      if (!eos) for (String suffix : suffixes(nextToken)) feats.set("SUFF_NEXT_" + suffix, 1.0);

      for (String prefix : prefixes(token)) feats.set("PREF_" + prefix, 1.0);
      if (!bos) for (String prefix : prefixes(prevToken)) feats.set("PREF_PREV_" + prefix, 1.0);
      if (!eos) for (String prefix : prefixes(nextToken)) feats.set("PREF_NEXT_" + prefix, 1.0);

      return feats;
    }