class HierarchyTreeNode implements Iterable<HierarchyTreeNode>, Streamable<HierarchyTreeNode>, Serializable {

    public void addDirectStaffMember(HierarchyTreeNode staffNode) {
        Objects.requireNonNull(staffNode);

        if(!staffNode.isRoot()) {
            staffNode.manager.removeDirectStaffMember(staffNode);
        }

        directStaff.add(staffNode);
        staffNode.manager = this;

        updateIsManagingUser();
        addStaffMember(staffNode);
    }

    public  HierarchyTreeNode(User user);

}