private void generateVariables(FAMAAttributedFeatureModel fm) {
   Iterator<AttributedFeature> it = fm.getAttributedFeatures().iterator();
   while (it.hasNext()) {
     AttributedFeature f = (AttributedFeature) it.next();
     Relation parentRelation = f.getParent();
     if (parentRelation != null
         && parentRelation.getNumberOfDestination() == 1
         && parentRelation.getCardinalities().hasNext()) {
       Iterator<Cardinality> itc = parentRelation.getCardinalities();
       Collection<Cardinality> cards = new ArrayList<Cardinality>();
       while (itc.hasNext()) cards.add(itc.next());
       r.addFeature(f, cards);
     } else {
       ArrayList<Cardinality> cards = new ArrayList<Cardinality>();
       cards.add(new Cardinality(0, 1));
       r.addFeature(f, cards);
     }
   }
 }
 //	private void generateConstraints(FAMAAttributedFeatureModel fm) {
 //		AttributedFeature root = fm.getRoot();
 //		r.addRoot(root);
 //		generateConstraints(root);
 //		Iterator<Constraint> it = fm.getConstraints().iterator();
 //		while (it.hasNext()) {
 //			Constraint dep = it.next();
 //			if (dep instanceof RequiresDependency){
 //				Dependency d = (Dependency)dep;
 //				r.addRequires(dep,d.getOrigin(),d.getDestination());
 //			}
 //			else if (dep instanceof ExcludesDependency){
 //				Dependency d = (Dependency)dep;
 //				r.addExcludes(dep,d.getOrigin(),d.getDestination());
 //			}
 //
 //		}
 //	}
 //
 private void generateConstraints(AttributedFeature f) {
   Iterator<Relation> relations = f.getRelations();
   while (relations.hasNext()) {
     Relation rel = relations.next();
     if (rel.getNumberOfDestination() == 1) {
       if (rel.isMandatory()) {
         r.addMandatory(rel, rel.getDestinationAt(0), f);
       } else if (rel.isOptional()) {
         r.addOptional(rel, rel.getDestinationAt(0), f);
       } else {
         r.addCardinality(rel, rel.getDestinationAt(0), f, rel.getCardinalities());
       }
       generateConstraints(rel.getDestinationAt(0));
     } else {
       Collection<GenericFeature> children = new ArrayList<GenericFeature>();
       Iterator<AttributedFeature> it = rel.getDestination();
       while (it.hasNext()) {
         AttributedFeature child = it.next();
         children.add(child);
         generateConstraints(child);
       }
       Collection<Cardinality> cards = new ArrayList<Cardinality>();
       Iterator<Cardinality> itc = rel.getCardinalities();
       while (itc.hasNext()) {
         cards.add(itc.next());
       }
       r.addSet(rel, f, children, cards);
     }
   }
 }