public static IReservationsInstruction <TResult> Select <T, TResult>(
     this IReservationsInstruction <T> source,
     Func <T, TResult> selector)
 {
     return(source.Accept(
                new SelectReservationsInstructionVisitor <T, TResult>(
                    selector)));
 }
 public T VisitFree(IReservationsInstruction <IReservationsProgram <T> > i)
 {
     return(i.Accept(this));
 }