public Property Given_ConstantBracketExpression_contains_consecutive_characters_When_comparing_to_RangeBracketValue_that_has_head_and_tail_Equals_should_returns_true()
        {
            // Arrange
            IArbMap arbMap = ArbMap.Default;

            return(Prop.ForAll(arbMap.ArbFor <char>().Filter(char.IsLetter).Filter(char.IsLower), arbMap.ArbFor <char>().Filter(char.IsLetter).Filter(char.IsLower),
                               (start, end) =>
            {
                char[] chrs = new[] { start, end }.OrderBy(x => x)
                .ToArray();
                char head = chrs[0];
                char tail = chrs[1];
                ConstantBracketValue constantBracketValue = new(Enumerable.Range(head, tail - head + 1)
                                                                .Select(ascii => ((char)ascii).ToString())
                                                                .Aggregate((accumulate, current) => $"{accumulate}{current}"));

                // Act
                bool actual = new RangeBracketValue(head, tail).Equals(constantBracketValue);

                return actual.When(start < end);
            }));
        }
 public Property Given_left_and_right_RangeBracketValues_left_ne_right_should_be_same_as_not_left_Equals_right(RangeBracketValue left, RangeBracketValue right)
 => (left != right).When(!left.Equals(right)).Label($"Left, Right : {(left, right)}");