public Operands Clone()
        {
            var operands = new Operands {
                Count = Count
            };

            for (int i = 0; i < OPCOUNT; ++i)
            {
                operands._operands[i] = _operands[i];
            }

            return(operands);
        }
        public void CloneTo(Operands operands)
        {
            if (operands != this)
            {
                operands.Count             = Count;
                operands._combinationCount = null;

                for (int i = 0; i < OPCOUNT; ++i)
                {
                    operands._operands[i] = _operands[i];
                }
            }
        }
        public int Combine(Operands operands)
        {
            if (operands != this)
            {
                for (int i = 0; i < OPCOUNT; ++i)
                {
                    if (operands._operands[i] != null && _operands[i] == null)
                    {
                        _operands[i]      = operands._operands[i];
                        Count            += 1;
                        _combinationCount = null;
                    }
                }
            }

            return(Count);
        }
 public bool GetTruthValue(Operands operands)
 {
     return(_node.GetValue(operands));
 }
 private LogicExpression(ExpressionNode node, Operands operands)
 {
     _node     = node;
     _operands = operands;
 }