/// <summary>
 /// Creates a shared static data for the specified context and sub-context (usable from both C# and HPC#)
 /// </summary>
 /// <param name="contextType">A type class that uniquely identifies the this shared data</param>
 /// <param name="subContextType">A type class that uniquely identifies this shared data within a sub-context of the primary context</param>
 /// <param name="alignment">Optional alignment</param>
 /// <returns>A shared static for the specified context</returns>
 public static SharedStatic <T> GetOrCreate(Type contextType, Type subContextType, uint alignment = 0)
 {
     return(new SharedStatic <T>(SharedStatic.GetOrCreateSharedStaticInternal(
                                     BurstRuntime.GetHashCode64(contextType), BurstRuntime.GetHashCode64(subContextType),
                                     (uint)UnsafeUtility.SizeOf <T>(), alignment == 0 ? (uint)4 : alignment)));
 }
 /// <summary>
 /// Creates a shared static data for the specified context and sub-context (usable from both C# and HPC#)
 /// </summary>
 /// <typeparam name="TContext">A type class that uniquely identifies the this shared data.</typeparam>
 /// <typeparam name="TSubContext">A type class that uniquely identifies this shared data within a sub-context of the primary context</typeparam>
 /// <param name="alignment">Optional alignment</param>
 /// <returns>A shared static for the specified context</returns>
 public static SharedStatic <T> GetOrCreate <TContext, TSubContext>(uint alignment = 0)
 {
     return(new SharedStatic <T>(SharedStatic.GetOrCreateSharedStaticInternal(
                                     BurstRuntime.GetHashCode64 <TContext>(), BurstRuntime.GetHashCode64 <TSubContext>(),
                                     (uint)UnsafeUtility.SizeOf <T>(), alignment == 0 ? 4 : alignment)));
 }