public static IBotBuilder UseWhen(
            this IBotBuilder builder,
            Predicate <IUpdateContext> predicate,
            Action <IBotBuilder> configure
            )
        {
            var branchBuilder = new BotBuilder();

            configure(branchBuilder);
            UpdateDelegate branchDelegate = branchBuilder.Build();

            builder.Use(new UseWhenMiddleware(predicate, branchDelegate));

            return(builder);
        }
        public static IBotBuilder MapWhen(
            this IBotBuilder builder,
            Predicate <IUpdateContext> predicate,
            Action <IBotBuilder> configure
            )
        {
            var mapBuilder = new BotBuilder();

            configure(mapBuilder);
            UpdateDelegate mapDelegate = mapBuilder.Build();

            builder.Use(new MapWhenMiddleware(predicate, mapDelegate));

            return(builder);
        }