public void stepReturn() {
   org.eclipse.emf.ecore.EObject current = interpreterDelegate.getNextObjectToInterprete();
   final int parentLevel =
       org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util.MtextEObjectUtil
               .getDepth(current)
           - 1;
   stopCondition =
       new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextCommand<
           org.eclipse.emf.ecore.EObject>() {
         public boolean execute(org.eclipse.emf.ecore.EObject element) {
           // For step return, we stop at the next object that is at least one level higher
           int depth =
               org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util
                   .MtextEObjectUtil.getDepth(element);
           return depth <= parentLevel;
         }
       };
   resume();
 }
 public void stepOver() {
   final org.eclipse.emf.ecore.EObject current = interpreterDelegate.getNextObjectToInterprete();
   final int currentLevel =
       org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util.MtextEObjectUtil
           .getDepth(current);
   stopCondition =
       new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextCommand<
           org.eclipse.emf.ecore.EObject>() {
         public boolean execute(org.eclipse.emf.ecore.EObject element) {
           // For step over, we stop at the next object that is at the same level or higher
           int depth =
               org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util
                   .MtextEObjectUtil.getDepth(element);
           boolean sameOrHigher = depth <= currentLevel;
           boolean differentElement = element != current;
           return sameOrHigher && differentElement;
         }
       };
   resume();
 }