public ComparisonRelationship(ComparisonKind comparisonKind, SymbolicValue leftOperand, SymbolicValue rightOperand)
            : base(leftOperand, rightOperand)
        {
            ComparisonKind = comparisonKind;

            this.hash = new Lazy <int>(() =>
            {
                var h = 19;
                h     = h * 31 + ComparisonKind.GetHashCode();
                h     = h * 31 + base.GetHashCode();
                return(h);
            });
        }
 /// <summary>
 /// Returns the hash code for this instance.
 /// </summary>
 /// <returns>A 32-bit signed integer that is the hash code for this instance.</returns>
 public override int GetHashCode()
 {
     return(HashHelper.Combine(
                DepthTestEnabled.GetHashCode(),
                DepthWriteEnabled.GetHashCode(),
                DepthComparison.GetHashCode(),
                StencilTestEnabled.GetHashCode(),
                StencilFront.GetHashCode(),
                StencilBack.GetHashCode(),
                StencilReadMask.GetHashCode(),
                StencilWriteMask.GetHashCode(),
                StencilReference.GetHashCode()));
 }
 /// <summary>
 /// Returns the hash code for this instance.
 /// </summary>
 /// <returns>A 32-bit signed integer that is the hash code for this instance.</returns>
 public override int GetHashCode()
 {
     return(HashHelper.Combine(Fail.GetHashCode(), Pass.GetHashCode(), DepthFail.GetHashCode(), Comparison.GetHashCode()));
 }