protected override Unit CreateDeployableItem(IZone zone, Position spawnPosition, Player player)
        {
            var corporationEid = player.CorporationEid;

            DefaultCorporationDataCache.IsCorporationDefault(corporationEid).ThrowIfTrue(ErrorCodes.CharacterMustBeInPrivateCorporation);

            var pbsEgg = (PBSEgg)base.CreateDeployableItem(zone, spawnPosition, player);

            //let the egg check the conditions by type
            pbsEgg.CheckDefinitionRelatedConditionsOrThrow(zone, spawnPosition, corporationEid);

            var pbsObjectDefinition = PBSHelper.GetPBSObjectDefinitionFromCapsule(ED);

            var pbsEd = EntityDefault.Get(pbsObjectDefinition);

            //check zone for conditions
            PBSHelper.CheckZoneForDeployment(zone, spawnPosition, pbsEd).ThrowIfError();

            //pass owner
            pbsEgg.DeployerPlayer = player;

            //all conditions match return the egg and continue placing it to the zone
            return(pbsEgg);
        }