docs: @Override
    public Collection<String> getCliqueFeatures(PaddedList<IN> cInfo, int loc, Clique clique) {
      Collection<String> features = new HashSet<String>();
  
      boolean doFE = cInfo.get(0).containsKey(DomainAnnotation.class);
      String domain = (doFE ? cInfo.get(0).get(DomainAnnotation.class) : null);
  
  //    System.err.println(doFE+"\t"+domain);
  
      if (clique == cliqueC) {
        //200710: tried making this clique null; didn't improve performance (rafferty)
        Collection<String> c = featuresC(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-C");
        }
      } else if (clique == cliqueCpC) {
        Collection<String> c = featuresCpC(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "CpC");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-CpC");
        }
  
        c = featuresCnC(cInfo, loc-1);
        addAllInterningAndSuffixing(features, c, "CnC");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-CnC");
        }
      } else if (clique == cliqueCp2C) {
        Collection<String> c = featuresCp2C(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "Cp2C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-Cp2C");
        }
      } else if (clique == cliqueCp3C) {
        Collection<String> c = featuresCp3C(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "Cp3C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-Cp3C");
        }
      } else if (clique == cliqueCp4C) {
        Collection<String> c = featuresCp4C(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "Cp4C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-Cp4C");
        }
      } else if (clique == cliqueCp5C) {
        Collection<String> c = featuresCp5C(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "Cp5C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-Cp5C");
        }
      } else if (clique == cliqueCpCp2C) {
        Collection<String> c = featuresCpCp2C(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "CpCp2C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-CpCp2C");
        }
  
        c = featuresCpCnC(cInfo, loc-1);
        addAllInterningAndSuffixing(features, c, "CpCnC");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-CpCnC");
        }
      } else if (clique == cliqueCpCp2Cp3C) {
        Collection<String> c = featuresCpCp2Cp3C(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "CpCp2Cp3C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-CpCp2Cp3C");
        }
      } else if (clique == cliqueCpCp2Cp3Cp4C) {
        Collection<String> c = featuresCpCp2Cp3Cp4C(cInfo, loc);
        addAllInterningAndSuffixing(features, c, "CpCp2Cp3Cp4C");
        if (doFE) {
          addAllInterningAndSuffixing(features, c, domain+"-CpCp2Cp3Cp4C");
        }
      }
  
      // System.err.println(StringUtils.join(features,"\n")+"\n");
      return features;
    }