'Process linux system group and gshadow files.
Orchestrates collection of account entries from /etc/group and /etc/gshadow.
The group and gshadow entries are reconciled and member users are added to
the entry.
Args:
fileset: A dict of files mapped from path to an open file.
Yields:
- A series of Group entries, each of which is populated with group
[memberships and indications of the shadow state of any group password.
- A series of anomalies in cases where there are mismatches between group
and gshadow states.'

def ParseFileset(self, fileset=None):

    gshadow = fileset.get('/etc/gshadow')
    if gshadow:
        self._ParseFile(gshadow, self.ParseGshadowEntry)
    else:
        logging.debug('No    /etc/gshadow    file.')
    group = fileset.get('/etc/group')
    if group:
        self._ParseFile(group, self.ParseGroupEntry)
    else:
        logging.debug('No    /etc/group    file.')
    self.ReconcileShadow(self.shadow_store)
    for anom in self.FindAnomalies():
        (yield anom)
    self.MergeMembers()
    for group in self.entry.values():
        (yield group)
