public static void ServerTryAddMark(IStaticWorldObject tradingStation)
        {
            var owners = WorldObjectOwnersSystem.SharedGetOwners(tradingStation);

            if (owners.Count == 0)
            {
                // no owners - incomplete trading station
                // (first owner set when the trading station instance spawned and ServerOnBuilt method called in ProtoTradingStation)
                return;
            }

            if (!ServerIsTradingStationHasActiveLots(tradingStation))
            {
                return;
            }

            if (!ServerActiveTradingStations.Add(tradingStation))
            {
                // already added
                return;
            }

            var allOnlinePlayers = Server.Characters.EnumerateAllPlayerCharacters(onlyOnline: true);

            foreach (var onlinePlayer in allOnlinePlayers)
            {
                var isOwner = owners.Contains(onlinePlayer.Name);
                var mark    = new TradingStationMark(tradingStation.Id,
                                                     tradingStation.TilePosition,
                                                     isOwner);
                Instance.CallClient(onlinePlayer,
                                    _ => _.ClientRemote_MarkAdded(mark));
            }
        }