// modifies the aheadstructures according to estructuralfeature change - matches the constraint by
 // hand (found, not searched, matchingvariables put)
 private ArrayList<AheadStructure> createNewFromOldRelaC(
     EObject host, Object target, EStructuralFeature edge, ArrayList<AheadStructure> gotStructs) {
   ArrayList<AheadStructure> newStructs = new ArrayList<AheadStructure>();
   for (AheadStructure aSn : gotStructs) {
     AheadStructure newaSn = aSn.clone();
     for (AxisConstraint rC : newaSn.SearchedConstraints) {
       if (rC instanceof RelationConstraint) {
         if (((RelationConstraint) rC).getEdge().equals(edge)) {
           // and make constraint "found"
           newaSn.FoundConstraints.add(rC);
           newaSn.SearchedConstraints.remove(rC);
           isModified = true;
           break;
         }
       }
     }
     newStructs.add(newaSn);
   }
   return newStructs;
 }
 // modifies the aheadstructures according to eclass change - matches the constraint by hand
 // (found, not searched, matchingvariables put)
 private ArrayList<AheadStructure> createNewFromOldTypeC(
     boolean isEClass,
     EClassifier clazzortype,
     Object instance,
     ArrayList<AheadStructure> gotStructs) {
   ArrayList<AheadStructure> newStructs = new ArrayList<AheadStructure>();
   for (AheadStructure aSn : gotStructs) {
     AheadStructure newaSn = aSn.clone();
     for (AxisConstraint tC : newaSn.SearchedConstraints) {
       if (tC instanceof TypeConstraint) {
         if (((TypeConstraint) tC).getType().equals(clazzortype)) {
           newaSn.FoundConstraints.add(tC);
           newaSn.SearchedConstraints.remove(tC);
           isModified = true;
           break;
         }
       }
     }
     newStructs.add(newaSn);
   }
   return newStructs;
 }