public TreeBuilder <TValue> WithRightLeaf(TValue value)
        {
            var builder = new TreeBuilderWithValue <TValue>(null, null, value);

            _right = builder;
            return(this);
        }
        public TreeBuilder <TValue> WithRight(Func <TreeBuilder <TValue>, TreeBuilderWithValue <TValue> > setup)
        {
            var builder = new TreeBuilder <TValue>();

            _right = setup(builder);
            return(this);
        }
 public TreeBuilderWithValue(
     TreeBuilderWithValue <TValue> left,
     TreeBuilderWithValue <TValue> right,
     TValue value)
 {
     _left  = left;
     _right = right;
     _value = value;
 }