public OrFeatureAllowNulls(BooleanFeature<T>... booleanFeatures) {
   super();
   this.booleanFeatures = booleanFeatures;
   String name = "";
   boolean firstFeature = true;
   for (BooleanFeature<T> booleanFeature : booleanFeatures) {
     if (!firstFeature) name += "|";
     name += booleanFeature.getName();
     firstFeature = false;
   }
   this.setName(name);
 }
 public IfThenElseStringFeature(
     BooleanFeature<T> condition, StringFeature<T> thenFeature, StringFeature<T> elseFeature) {
   super();
   this.condition = condition;
   this.thenFeature = thenFeature;
   this.elseFeature = elseFeature;
   this.setName(
       "IfThenElse("
           + condition.getName()
           + ","
           + thenFeature.getName()
           + ","
           + elseFeature.getName()
           + ")");
 }
 public IfThenElseGenericFeature(
     BooleanFeature<T> condition, Feature<T, Y> thenFeature, Feature<T, Y> elseFeature) {
   super();
   this.condition = condition;
   this.thenFeature = thenFeature;
   this.elseFeature = elseFeature;
   this.setName(
       "IfThenElse("
           + condition.getName()
           + ","
           + thenFeature.getName()
           + ","
           + elseFeature.getName()
           + ")");
 }