code: public final T getParent() {
        if (parent == null) {
           synchronized (this) {
              if (parent == null) {
                 T ev = getParentFromConfig();
                 if (ev != null && ev != getSingleRoot()) {
                    parent = Cast.as(ev);
                 }
              }
           }
        }
        return parent == null ? getSingleRoot() : parent;
     }
docs: <p>Gets the parent of this element. It first checks if a parent has been explicitly set and if not will attempt to
  determine the parent using the configuration property <code>canonical.name.parent</code> where the canonical name
  is determined using {@link #canonicalName()}.</p>
  
  @return the parent of this element as an Optional