code: @Nonnull
      public SortedSet<? extends Element> getChildren() {
          if (children == null) {
              children = new ParentPreservingSet(newChildrenInstance());
          }
          return children;
      }
docs: This default implementation uses the {@link #newChildrenInstance()} to initialize the children set and wraps
  it in a private set implementation that automagically changes the parent of the elements based on the
  membership.
  
  @return children of this element