/// <summary>
 /// Instancia um novo objecto do tipo <see cref="BooleanCombination"/>.
 /// </summary>
 /// <param name="logicInput">A combinação lógica de entrada.</param>
 /// <param name="logicOutput">The logic output.</param>
 /// <exception cref="ArgumentNullException">logicInput</exception>
 internal BooleanCombination(LogicCombinationBitArray logicInput, EBooleanMinimalFormOutStatus logicOutput)
 {
     if (logicInput == null)
     {
         throw new ArgumentNullException("logicInput");
     }
     else
     {
         this.logicInput  = logicInput;
         this.logicOutput = logicOutput;
     }
 }
        /// <summary>
        /// Adiciona uma combinação à lista de entrada/saída.
        /// </summary>
        /// <param name="array">O vector de bits que representa uma entrada.</param>
        /// <param name="outputStatus">O estado de saída associado à entrada.</param>
        /// <returns>A representação interna.</returns>
        /// <exception cref="ArgumentNullException">Se o vector de bits for nulo.</exception>
        public BooleanCombination Add(
            LogicCombinationBitArray array,
            EBooleanMinimalFormOutStatus outputStatus)
        {
            if (array == null)
            {
                throw new ArgumentNullException("array");
            }
            else
            {
                var result = new BooleanCombination(
                    array,
                    outputStatus);
                this.combinationElements.Add(result);
                this.maxCombinationsLength = Math.Max(
                    this.maxCombinationsLength,
                    array.Length);

                return(result);
            }
        }