/// <summary>
        /// Create the ace from thr binary input
        /// </summary>
        /// <param name="binary">The input binary</param>
        /// <param name="offset">The offset of the binary</param>
        public static _AceHeader CreateAceFromBinary(byte[] binary, int offset)
        {
            if (binary == null)
            {
                throw new ArgumentNullException(nameof(binary));
            }

            if (offset < 0 || offset > binary.Length - 1)
            {
                throw new ArgumentOutOfRangeException(nameof(offset));
            }

            ACE_TYPE type = (ACE_TYPE)binary[offset];

            if (DtypUtility.IsObjectAce(type))
            {
                return(new _ObjectAce(binary, offset));
            }
            else
            {
                return(new _NonObjectAce(binary, offset));
            }
        }