     }
 
     @discardableResult
-    public func dispatch(_ action: Action) -> Any {
+    open func dispatch(_ action: Action) -> Any {
         let returnValue = dispatchFunction(action)
 
         return returnValue
     }
 
     @discardableResult
-    public func dispatch(_ actionCreatorProvider: @escaping ActionCreator) -> Any {
+    open func dispatch(_ actionCreatorProvider: @escaping ActionCreator) -> Any {
         let action = actionCreatorProvider(state, self)
 
         if let action = action {

 reducers you can combine them by initializng a `MainReducer` with all of your reducers as an
 argument.
 */
public class Store<State: StateType>: StoreType {

    typealias SubscriptionType = Subscription<State>


        return true
    }

    open func subscribe<S: StoreSubscriber>(_ subscriber: S)
        where S.StoreSubscriberStateType == State {
            subscribe(subscriber, selector: nil)
    }

    open func subscribe<SelectedState, S: StoreSubscriber>
        (_ subscriber: S, selector: ((State) -> SelectedState)?)
        where S.StoreSubscriberStateType == SelectedState {
            if !_isNewSubscriber(subscriber: subscriber) { return }
