<PackageReference Include="NUnit" Version="4.3.2" />

NUnit.Framework.Constraints.ConstraintBuilder

public sealed class ConstraintBuilder : IResolveConstraint
ConstraintBuilder maintains the stacks that are used in processing a ConstraintExpression. An OperatorStack is used to hold operators that are waiting for their operands to be reorganized. a ConstraintStack holds input constraints as well as the results of each operator applied.
namespace NUnit.Framework.Constraints { public sealed class ConstraintBuilder : IResolveConstraint { public sealed class ConstraintStack { public bool Empty { get; } public ConstraintStack(ConstraintBuilder builder); public void Push(IConstraint constraint); public IConstraint Pop(); } public ConstraintBuilder(); public void Append(ConstraintOperator op); public void Append(Constraint constraint); public void Replace(Constraint constraint); public IConstraint Resolve(); } }