public TReturn Bounce(T1 initialInput)
        {
            Operator.ChangeInput(initialInput);

            while (!Operator.Stopping)
            {
                Operator = Operator.Work(Operator.Input, Operator);
            }

            return(Operator.Result);
        }
 private Trampoline2(Func <T1, RecursionOperator <T1, TReturn>, RecursionOperator <T1, TReturn> > work)
 {
     Operator = new RecursionOperator <T1, TReturn>(work);
 }