public ScalarFromArrayTracking(
     BoxedVariable <Variable> left, BoxedVariable <Variable> right,
     FlatAbstractDomain <bool> isUnmodifiedFromEntry,
     SymbolicExpressionTracker <BoxedVariable <Variable>, BoxedExpression> conditions)
     : this(new SetOfConstraints <BoxedVariable <Variable> >(left), new SetOfConstraints <BoxedVariable <Variable> >(right),
            isUnmodifiedFromEntry, conditions)
 {
     Contract.Requires(isUnmodifiedFromEntry != null);
     Contract.Requires(conditions != null);
 }
                public ScalarFromArrayTracking(
                    SetOfConstraints <BoxedVariable <Variable> > left,
                    SetOfConstraints <BoxedVariable <Variable> > right,
                    FlatAbstractDomain <bool> isUnmodifiedFromEntry,
                    SymbolicExpressionTracker <BoxedVariable <Variable>, BoxedExpression> conditions)
                {
                    Contract.Requires(left != null);
                    Contract.Requires(right != null);
                    Contract.Requires(isUnmodifiedFromEntry != null);
                    Contract.Requires(conditions != null);

                    this.left  = left;
                    this.right = right;
                    this.isUnmodifiedFromEntry = isUnmodifiedFromEntry;
                    this.conditions            = conditions;
                }