/// <summary>
        /// Checks to make sure that the flow rate of the overall streams match
        /// </summary>
        /// <returns></returns>
        protected virtual ValidationResult CheckOverallFlowRate()
        {
            //variables used to store incoming and outgoing flow rates.
            StreamComponent incomingFlow = TallyOverallFlowRate(target.IncomingStreams);
            StreamComponent outogingFlow = TallyOverallFlowRate(target.OutgoingStreams);

            //if they're equal then we're good, otherwise return an error
            if (incomingFlow.CompareTo(outogingFlow) == 0)
            {
                return(ValidationResult.Empty);
            }
            else
            {
                string message = ErrorMessageGenerator.GenerateMesssage(ErrorMessages.Overall_Flowrate_Mismatch);
                return(new ValidationResult(target.OutgoingStreams, message));
            }
        }