code: @Override
      public AttributeType<D> sup(AttributeType<D> superType) {
          ((AttributeTypeImpl<D>) superType).sups().forEach(st -> checkInstancesMatchRegex(st.regex()));
          return super.sup(superType);
      }
docs: This method is overridden so that we can check that the regex of the new super type (if it has a regex)
  can be applied to all the existing instances.