public void traverse(int[] levels) {
        if (printThisLevel(levels)) {
            System.out.println(indent.toString() + value);
            indent.append(BLANK_SPACE);
        }
        ++level;
        for (Object aChildren : children) {
            ((Entity) aChildren).traverse(levels);
        }
        --level;
        if (printThisLevel(levels)) {
            indent.setLength(indent.length() - 3);
        }
    }