/// <summary>
        /// Schedule jobs to collect and sort shared values.
        /// </summary>
        /// <param name="inputDeps">Dependent JobHandle</param>
        /// <returns>JobHandle</returns>
        public JobHandle Schedule(JobHandle inputDeps)
        {
            if (m_Source.Length <= 1)
            {
                return(inputDeps);
            }
            var initializeIndicesJob = new InitializeIndices
            {
                buffer = m_Buffer
            };
            var initializeIndicesJobHandle = initializeIndicesJob.Schedule(m_Source.Length, (m_Source.Length + 1) / 8, inputDeps);
            var sortJobHandle = Sort(initializeIndicesJobHandle);
            var resolveSharedGroupsJobHandle = ResolveSharedGroups(sortJobHandle);

            return(resolveSharedGroupsJobHandle);
        }
        /// <summary>
        ///     Schedule jobs to collect and sort shared values.
        /// </summary>
        /// <param name="inputDeps">Dependent JobHandle</param>
        /// <returns>JobHandle</returns>
        public JobHandle Schedule(JobHandle inputDeps)
        {
            if (m_SourceBuffer.Length == 0)
            {
                m_WorkingBuffer[0] = 0;
                return(inputDeps);
            }

            var initializeIndicesJob = new InitializeIndices
            {
                workingBuffer = m_WorkingBuffer
            };
            var initializeIndicesJobHandle =
                initializeIndicesJob.Schedule(m_SourceBuffer.Length, (m_SourceBuffer.Length + 1) / 8, inputDeps);
            var sortJobHandle = Sort(initializeIndicesJobHandle);
            var resolveSharedGroupsJobHandle = ResolveSharedGroups(sortJobHandle);

            return(resolveSharedGroupsJobHandle);
        }