/// <summary>
        /// Constructor for static memory address.
        /// </summary>
        public MemoryAddress(Game game, string name, long address, GameVersion gameVersion, DataType type, int length = 0)
            : this(game, name, type, length)
        {
            if (gameVersion == null)
            {
                throw new ArgumentNullException(nameof(gameVersion), "Unable to construct memory address: No game version set.");
            }

            Address = address;
            GameVersion = gameVersion;
        }
        public void UpdateForVersion(GameVersion newVersion)
        {
            // NOTE(Ligh): Dynamic addresses do not depend on the version.
            if (IsDynamic)
            {
                return;
            }

            if (newVersion == null || GameVersion == null)
            {
                throw new ArgumentNullException("Tried to update address for version but version is not defined.");
            }

            if (newVersion != GameVersion)
            {
                address += newVersion.GetOffsetForVersion(address) - GameVersion.GetOffsetForVersion(address);
            }
        }