 struct TransitionOf<F: Feature>
 {
     public
-    enum From<From: FeatureState> where From.ParentFeature == F { }
+    struct Into<S: FeatureState> where S.ParentFeature == F
+    {
+        public
+        let newState: S
+    }
+    
+    public
+    struct From<S: FeatureState> where S.ParentFeature == F
+    {
+        public
+        let oldState: S
+    }
     
     public
     struct Between<From: FeatureState, Into: FeatureState> where

    
#endif

public
struct TransitionFrom<S: FeatureState>
{
    public
    let oldState: S
}

public
struct TransitionInto<S: FeatureState>
{
    public
    let newState: S
}

//===

    let newState: Any
}

public
typealias TransitionInto<S: FeatureState> = TransitionOf<S.ParentFeature>.Into<S>

public
typealias TransitionFrom<S: FeatureState> = TransitionOf<S.ParentFeature>.From<S>

#if swift(>=3.2)
    
public
