class GroupZipper {

    public KeePassFile cloneKeePassFile() {
        Iterator<Group> iter = iterator();

        while(iter.hasNext()) {
            Group group = iter.next();

            Group clonedGroup = cloneGroup(group);
            replace(clonedGroup);
        }

        return close();
    }

    public  GroupZipper(KeePassFile keePassFile);
    private  GroupZipper(GroupZipper parent, Group group, int index);

}