default Stream<Document> ancestors() {
        final List<Document> ancestors = new ArrayList<>();
        Document parent = this;
        while ((parent = parent.getParent().orElse(null)) != null) {
            ancestors.add(parent);
        }
        Collections.reverse(ancestors);
        return ancestors.stream();
    }
Returns a {@code Stream} of every ancestor to this {@code Document}, 
beginning with the first ancestor (the root) and ending with the parent 
of this {@code Document}. 
<p>
This stream can typically not be short-circuited and operations on it 
will therefore have a complexity of {@code O(n)}.

@return  a stream of ancestors, from the root to the parent
runtime-parent/runtime-config/src/main/java/com/speedment/runtime/config/Document.java