function addGroup(group, appendChild) {

        // Do not add group if filter says "no"
        if (group_filter && !group_filter(group))
            return;

        // Add group to groups collection
        group_view.groups[group.id] = group;

        // Create element for group
        var list_group = new GuacUI.ListGroup(group.name);
        list_groups[group.id] = list_group;
        GuacUI.addClass(list_group.getElement(), "list-item");

        // Mark group as balancer if appropriate
        if (group.type === GuacamoleService.ConnectionGroup.Type.BALANCING)
            GuacUI.addClass(list_group.getElement(), "balancer");

        // Recursively add all children to the new element
        addGroupContents(group, list_group.addElement);

        // If multiselect, add checkbox for each group
        if (multiselect) {

            var group_choice = GuacUI.createElement("div", "choice");
            var group_checkbox = GuacUI.createChildElement(group_choice, "input");
            group_checkbox.setAttribute("type", "checkbox");
            
            group_choice.appendChild(list_group.getElement());
            appendChild(group_choice);

            function fire_group_change(e) {

                // Prevent click from affecting parent
                e.stopPropagation();

                // Fire event if handler defined
                if (group_view.ongroupchange)
                    group_view.ongroupchange(group, this.checked);

            }

            // Fire change events when checkbox modified
            group_checkbox.addEventListener("click",  fire_group_change, false);
            group_checkbox.addEventListener("change", fire_group_change, false);

            // Add checbox to set of group checkboxes
            group_checkboxes[group.id] = group_checkbox;

        }
        else
            appendChild(list_group.getElement());

        // Fire click events when group clicked
        list_group.onclick = function() {
            if (group_view.ongroupclick)
                group_view.ongroupclick(group);
        };

    }
Adds the given group via the given appendChild() function.

@param {GuacamoleService.ConnectionGroup} group The group to add.
@param {Function} appendChild A function which, given an element, will
                              add that element the the display as
                              desired.