public static Reference createReferenceWithProperties(
      Feature feature, String id, ConfigState state, int min, int max, Feature metaMetaModel) {
    Reference reference = FmpFactoryImpl.eINSTANCE.createReference();
    Feature metaMetaReference = (Feature) metaMetaModel.getChildren().get(2);
    reference.setProperties((Feature) ModelManipulation.INSTANCE.configure(metaMetaReference));
    setReferenceAttributes(reference, feature, id, state, min, max);

    return reference;
  }
  public static FeatureGroup createFeatureGroupWithProperties(
      String id, int min, int max, Feature metaMetaModel) {
    FeatureGroup featureGroup = FmpFactory.eINSTANCE.createFeatureGroup();
    Feature metaMetaFeatureGroup = (Feature) metaMetaModel.getChildren().get(1);
    featureGroup.setProperties(ModelManipulation.INSTANCE.configure(metaMetaFeatureGroup));
    setFeatureGroupAttributes(featureGroup, id, min, max);

    return featureGroup;
  }
  public static Feature createFeatureWithProperties(
      String name,
      String id,
      ConfigState state,
      ValueType valueType,
      Object value,
      Object defaultValue,
      int min,
      int max,
      Feature metaMetaModel) {
    Feature feature = FmpFactory.eINSTANCE.createFeature();
    Feature metaMetaFeature = (Feature) metaMetaModel.getChildren().get(0);
    feature.setProperties(ModelManipulation.INSTANCE.configure(metaMetaFeature));
    setFeatureAttributes(feature, name, id, state, valueType, value, defaultValue, min, max);

    return feature;
  }
  public static Feature makeModel(Project project) {
    Feature metaModel = project.getMetaModel();

    Feature metaFeature = (Feature) metaModel.getChildren().get(0);
    // Feature metaFeatureGroup = (Feature)metaModel.getChildren().get(1);
    // Feature metaReference = (Feature) metaModel.getChildren().get(2);

    Feature model = FmpFactory.eINSTANCE.createFeature();
    model.setProperties(ModelManipulation.INSTANCE.configure(metaFeature));
    setFeatureAttributes(
        model,
        "My Feature Model",
        "My Feature Model",
        ConfigState.UNDECIDED_LITERAL,
        ValueType.NONE_LITERAL,
        null,
        null,
        1,
        1);

    return model;
  }