package hu.webarticum.treeprinter;

import java.util.List;

public interface TreeNode {
    
    public String content();
    
    public List<TreeNode> children();
    
    public default TreeNode originalNode() {
        return this;
    }

    public default Insets insets() {
        return Insets.EMPTY;
    }

    public default boolean isDecorable() {
        return true;
    }

    public default boolean isPlaceholder() {
        return false;
    }

}

@@ -57,40 +57,506 @@
 t;%0A%0A
-public interface TreeNode %7B%0A    
+import hu.webarticum.treeprinter.decorator.AbstractTreeNodeDecorator;%0Aimport hu.webarticum.treeprinter.printer.TreePrinter;%0A%0A/**%0A * Main interface for trees and tree nodes%0A * %0A * Any tree is given by its root node.%0A * Nodes provide a content as a string (via %7B@link #content()%7D),%0A * and list their children (via %7B@link #children()%7D).%0A * The other methods provide metadata, they have default implementations.%0A */%0Apublic interface TreeNode %7B%0A    %0A    /**%0A     * Gets the content of this node.%0A     */
 %0A   
@@ -577,28 +577,90 @@
  content();%0A
+%0A
     
+/**%0A     * Gets the list of child nodes of this node.%0A     */
 %0A    public 
@@ -690,229 +690,1195 @@
 ();%0A
+%0A
     
-%0A    public default TreeNode originalNode() %7B%0A        return this;%0A    %7D%0A%0A    public default Insets insets() %7B%0A        return Insets.EMPTY;%0A    %7D%0A%0A    public default boolean isDecorable() %7B%0A        return true;%0A    %7D%0A
+/**%0A     * Gets the original node object.%0A     * %0A     * By default, returns with %3Ccode%3Ethis%3C/code%3E.%0A     * Decorators should return with the most inner decorated node.%0A     */%0A    public default TreeNode originalNode() %7B%0A        return this;%0A    %7D%0A%0A    /**%0A     * Gets the content insets.%0A     * %0A     * Returns with the sizes of the visual decoration around the main content.%0A     * By default, this is fully zero.%0A     * Visually extending decorators (border, shadow etc.) should extend%0A     * the insets with the sizes of the visual extension.%0A     */%0A    public default Insets insets() %7B%0A        return Insets.EMPTY;%0A    %7D%0A%0A    /**%0A     * Checks if this node can be decorated.%0A     * %0A     * By default, decorators should keep non-decorable nodes untouched.%0A     * Most decorator support forcing decoration (see %7B@link AbstractTreeNodeDecorator%7D).%0A     */%0A    public default boolean isDecorable() %7B%0A        return true;%0A    %7D%0A%0A    /**%0A     * Checks if this node is a placeholder.%0A     * %0A     * By default, generic %7B@link TreePrinter%7D implementations hide placeholder nodes.%0A     * Some types of implementation (e. g. n-ary trees) should take these into account anyway.%0A     */
 %0A   

Add doc comments to TreeNode