static async Task <(List <Group>, Group, Group, IDictionary <string, Group>, IDictionary <string, Group>)> ExtractGroupsFromInputFile(API api, string fileName)
        {
            List <Group> groups;
            Group        firstLineParentGroupParsed;
            Group        firstLineParentGroupFromDB;
            IDictionary <string, Group> groupLookupFromDB;
            IDictionary <string, Group> groupLookupParsed;

            try
            {
                var parser = new ImportGroupParser(api, rootGroupSreference);
                parser.RowParsed += Parser_RowParsed;

                using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    groups = await parser.ParseAsync(stream);
                }
                firstLineParentGroupParsed = parser.FirstLineParentGroupParsed;
                firstLineParentGroupFromDB = parser.FirstLineParentGroupFromDB;
                groupLookupFromDB          = parser.GroupLookupFromDB;
                groupLookupParsed          = parser.GroupLookupParsed;
            }
            catch (Exception exception)
            {
                Console.WriteLine("Parsing failed, exception: {0}", exception.Message);
                throw;
            }
            return(groups, firstLineParentGroupParsed, firstLineParentGroupFromDB, groupLookupFromDB, groupLookupParsed);
        }
 static void Parser_RowParsed(object sender, RowParsedEventArgs <Group> e)
 {
     ImportGroupParser.RowParsedHandler(sender, e, Console.WriteLine, isVerboseMode, true);
 }