public static InputActionMap AddActionMap(this InputActionAsset asset, string name)
        {
            if (asset == null)
            {
                throw new ArgumentNullException(nameof(asset));
            }
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }

            var map = new InputActionMap(name);

            map.GenerateId();
            asset.AddActionMap(map);
            return(map);
        }
        /// <summary>
        /// Create an action map with the given name and add it to the asset.
        /// </summary>
        /// <param name="asset">Asset to add the action map to</param>
        /// <param name="name">Name to assign to the </param>
        /// <returns>The newly added action map.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="asset"/> is <c>null</c> or
        /// <exception cref="InvalidOperationException">An action map with the given <paramref name="name"/>
        /// already exists in <paramref name="asset"/>.</exception>
        /// <paramref name="name"/> is <c>null</c> or empty.</exception>
        public static InputActionMap AddActionMap(this InputActionAsset asset, string name)
        {
            if (asset == null)
            {
                throw new ArgumentNullException(nameof(asset));
            }
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (asset.FindActionMap(name) != null)
            {
                throw new InvalidOperationException(
                          $"An action map called '{name}' already exists in the asset");
            }

            var map = new InputActionMap(name);

            map.GenerateId();
            asset.AddActionMap(map);
            return(map);
        }