public CorrectionSpectrumPADFeatureSet(int low, int high) {
    super();
    insertRequiredFeature("duration__duration");

    insertRequiredFeature("nominal_bark_" + low + "_" + high + "__prediction");
    insertRequiredFeature("bark_" + low + "_" + high + "__prediction_confidence");
    insertRequiredFeature("bark_" + low + "_" + high + "__prediction_confidence_accented");

    List<ContextDesc> contexts = new ArrayList<ContextDesc>();
    contexts.add(new ContextDesc("f2b2", 2, 2));
    contexts.add(new ContextDesc("f2b1", 2, 1));
    contexts.add(new ContextDesc("f2b0", 2, 0));
    contexts.add(new ContextDesc("f1b2", 1, 2));
    contexts.add(new ContextDesc("f0b2", 0, 2));
    contexts.add(new ContextDesc("f0b1", 0, 1));
    contexts.add(new ContextDesc("f1b0", 1, 0));
    contexts.add(new ContextDesc("f1b1", 1, 1));
    for (ContextDesc context : contexts) {
      for (String norm : new String[]{"", "_norm"}) {
        for (String slope : new String[]{"", "_delta"}) {
          for (String agg : new String[]{"__zMax", "__zMean"}) {
            insertRequiredFeature("f0" + slope + norm + "_" + context.getLabel() + agg);
          }
        }
      }
      insertRequiredFeature("duration__duration_" + context.getLabel() + "__zNorm");
      insertRequiredFeature("duration__duration_" + context.getLabel() + "__rNorm");
    }

    for (String acoustic : new String[]{"f0"}) {
      for (String norm : new String[]{"", "_norm"}) {
        for (String slope : new String[]{"", "_delta"}) {
          for (String agg : new String[]{"max", "mean", "stdev", "zMax"}) {
            insertRequiredFeature(acoustic + slope + norm + "__" + agg);
          }
        }
      }
    }

    this.class_attribute = "nominal_PitchAccentCorrect";
  }