/// <summary>
 /// (optional) Get token type
 /// </summary>
 /// <param name="tokenContainer"></param>
 /// <returns>type or null</returns>
 public static string Key(this IToken tokenContainer)
 => tokenContainer.AsOption <ITokenObject>()?.Key;
 /// <summary>
 /// (optional) Get token path patterns.
 /// </summary>
 /// <param name="tokenContainer"></param>
 /// <returns>type or null</returns>
 public static string[] Patterns(this IToken tokenContainer)
 => tokenContainer.AsOption <ITokenObject>()?.Patterns;
 /// <summary>
 /// (optional) Get token object
 /// </summary>
 /// <param name="tokenContainer"></param>
 /// <returns>object or null</returns>
 public static object TokenObject(this IToken tokenContainer)
 => tokenContainer.AsOption <ITokenObject>()?.TokenObject;