// must be Company Group or decendent, a group with its sReference must be present in the database
        public static void RowParsedHandler(object sender, RowParsedEventArgs <Group> e, LoggerAction log, bool isVerboseMode, bool flush)
        {
            if (isVerboseMode || e.Exception != null)
            {
                log($"Parsed Row: {e.Row}" + (e.Exception == null ? $" OK, {e.ImportedItem.Parent.Name},{e.ImportedItem.Parent.Reference},{e.ImportedItem.Name},{e.ImportedItem.Reference}" : ", exception: " + e.Exception.Message));
                if (flush)
                {
                    Console.Out.Flush();
                }
            }

            // Terminate is decided by ImportGroupParser and is transparent to RowParser
            if (e.Exception?.Message.Contains("Terminate") == true)
            {
                throw e.Exception;
            }
        }
 static void Parser_RowParsed(object sender, RowParsedEventArgs <Group> e)
 {
     ImportGroupParser.RowParsedHandler(sender, e, Console.WriteLine, isVerboseMode, true);
 }
        protected void OnRowParsed(RowParsedEventArgs <Group> e)
        {
            EventHandler <RowParsedEventArgs <Group> > eventHandler = RowParsed;

            eventHandler?.Invoke(this, e);
        }