@Override
 public List<metadslx.core.MetaProperty> MetaClass_getAllProperties(
     metadslx.core.MetaClass _this) {
   ArrayList<MetaProperty> result = new ArrayList<>();
   for (MetaProperty prop : _this.getProperties()) {
     result.add(prop);
   }
   for (MetaClass cls : _this.getAllSuperClasses()) {
     for (MetaProperty prop : cls.getProperties()) {
       result.add(prop);
     }
   }
   return result;
 }
 @Override
 public List<metadslx.core.MetaOperation> MetaClass_getAllOperations(
     metadslx.core.MetaClass _this) {
   ArrayList<MetaOperation> result = new ArrayList<>();
   for (MetaOperation oper : _this.getOperations()) {
     result.add(oper);
   }
   for (MetaClass cls : _this.getAllSuperClasses()) {
     for (MetaOperation oper : cls.getOperations()) {
       result.add(oper);
     }
   }
   return result;
 }
 @Override
 public List<metadslx.core.MetaClass> MetaClass_getAllSuperClasses(metadslx.core.MetaClass _this) {
   ArrayList<MetaClass> result = new ArrayList<>();
   for (MetaClass sup : _this.getSuperClasses()) {
     Collection<MetaClass> allSupers = sup.getAllSuperClasses();
     if (!result.contains(sup)) {
       result.add(sup);
     }
     for (MetaClass supSup : allSupers) {
       if (!result.contains(supSup)) {
         result.add(supSup);
       }
     }
   }
   return result;
 }
 @Override
 public List<metadslx.core.MetaOperation> MetaClass_getAllImplementedOperations(
     metadslx.core.MetaClass _this) {
   List<MetaOperation> ops = _this.getAllOperations();
   int i = ops.size() - 1;
   while (i >= 0) {
     String name = ops.get(i).getName();
     MetaOperation op = null;
     for (MetaOperation o : ops) {
       if (name.equals(o.getName())) {
         op = o;
         break;
       }
     }
     if (op != ops.get(i)) {
       ops.remove(i);
     }
     --i;
   }
   return ops;
 }
 @Override
 public List<metadslx.core.MetaProperty> MetaClass_getAllImplementedProperties(
     metadslx.core.MetaClass _this) {
   List<MetaProperty> props = _this.getAllProperties();
   int i = props.size() - 1;
   while (i >= 0) {
     String name = props.get(i).getName();
     MetaProperty prop = null;
     for (MetaProperty p : props) {
       if (name.equals(p.getName())) {
         prop = p;
         break;
       }
     }
     if (prop != props.get(i)) {
       props.remove(i);
     }
     --i;
   }
   return props;
 }