public static IOpenResult <TChild> Configured <TChild>(this IOpenResult <TChild> result, Action <TChild> configure)
 {
     result.OnConfigure = configure;
     return(result);
 }
 public static IOpenResult <TChild> WhenClosing <TChild>(this IOpenResult <TChild> result, Action <TChild> onShutdown)
 {
     result.OnClose = onShutdown;
     return(result);
 }
 public static IOpenResult <TChild> AfterClosingDo <TChild>(this IOpenResult <TChild> result, Action <TChild> action)
 {
     result.AfterClosing = child => new DelegateResult(() => action(child)).AsCoroutine();
     return(result);
 }
 public static IOpenResult <TChild> BeforeActivationDo <TChild>(this IOpenResult <TChild> result,
                                                                Action <TChild> action)
 {
     result.BeforeActivation = child => new DelegateResult(() => action(child)).AsCoroutine();
     return(result);
 }
 public static IOpenResult <TChild> AfterClosingDo <TChild>(this IOpenResult <TChild> result,
                                                            Func <TChild, IEnumerable <IResult> > coroutine)
 {
     result.AfterClosing = coroutine;
     return(result);
 }
 public static IOpenResult <TChild> BeforeActivationDo <TChild>(this IOpenResult <TChild> result,
                                                                Func <TChild, IEnumerable <IResult> > coroutine)
 {
     result.BeforeActivation = coroutine;
     return(result);
 }