public AFeatureData create(int id, int startLineNumber, int endLineNumber) {
   final AFeatureData data;
   switch (dataType) {
     case TYPE_FOP:
       data = new FOPFeatureData(id, startLineNumber, endLineNumber);
       data.setConstraint(new Literal(sigs.getFeatureName(id)));
       break;
     case TYPE_PP:
       data = new PreprocessorFeatureData(startLineNumber, endLineNumber);
       data.setConstraint(new Literal(sigs.getFeatureName(id)));
       break;
     default:
       data = null;
   }
   return data;
 }
 public AFeatureData create(Node constraint, int startLineNumber, int endLineNumber) {
   final AFeatureData data;
   switch (dataType) {
     case TYPE_FOP:
       if (constraint instanceof Literal) {
         data =
             new FOPFeatureData(
                 sigs.getFeatureID(((Literal) constraint).var.toString()),
                 startLineNumber,
                 endLineNumber);
       } else {
         data = new FOPFeatureData(-1, startLineNumber, endLineNumber);
       }
       data.setConstraint(constraint);
       break;
     case TYPE_PP:
       data = new PreprocessorFeatureData(startLineNumber, endLineNumber);
       data.setConstraint(constraint);
       break;
     default:
       data = null;
   }
   return data;
 }