/**
	 * Set the final score details for the last participants of the specified festival data.
	 * Returns true if the score is higher than that previously recorded this cycle.
	 *
	 * @param player
	 * @param oracle
	 * @param festivalId
	 * @param offeringScore
	 * @return boolean isHighestScore
	 */
	public boolean setFinalScore(L2PcInstance player, int oracle, int festivalId, long offeringScore)
	{
		List<String> partyMembers;

		int currDawnHighScore = getHighestScore(SevenSigns.CABAL_DAWN, festivalId);
		int currDuskHighScore = getHighestScore(SevenSigns.CABAL_DUSK, festivalId);

		int thisCabalHighScore = 0;
		int otherCabalHighScore = 0;

		if (oracle == SevenSigns.CABAL_DAWN)
		{
			thisCabalHighScore = currDawnHighScore;
			otherCabalHighScore = currDuskHighScore;

			_dawnFestivalScores.put(festivalId, offeringScore);
		}
		else
		{
			thisCabalHighScore = currDuskHighScore;
			otherCabalHighScore = currDawnHighScore;

			_duskFestivalScores.put(festivalId, offeringScore);
		}

		StatsSet currFestData = getHighestScoreData(oracle, festivalId);

		// Check if this is the highest score for this level range so far for the player's cabal.
		if (offeringScore > thisCabalHighScore)
		{
			// If the current score is greater than that for the other cabal,
			// then they already have the points from this festival.
			if (thisCabalHighScore < otherCabalHighScore)
				return false;

			List<Integer> prevParticipants = getPreviousParticipants(oracle, festivalId);
			partyMembers = new ArrayList<>(prevParticipants.size());

			// Record a string list of the party members involved.
			for (Integer partyMember : prevParticipants)
				partyMembers.add(CharNameTable.getInstance().getNameById(partyMember));

			// Update the highest scores and party list.
			currFestData.set("date", String.valueOf(System.currentTimeMillis()));
			currFestData.set("score", offeringScore);
			currFestData.set("members", Util.implodeString(partyMembers, ","));

			if (Config.DEBUG)
				_log.info("SevenSignsFestival: " + player.getName() + "'s party has the highest score (" + offeringScore + ") so far for "
						+ SevenSigns.getCabalName(oracle) + " in " + getFestivalName(festivalId));

			// Only add the score to the cabal's overall if it's higher than the other cabal's score.
			if (offeringScore > otherCabalHighScore)
			{
				int contribPoints = FESTIVAL_LEVEL_SCORES[festivalId];

				// Give this cabal the festival points, while deducting them from the other.
				SevenSigns.getInstance().addFestivalScore(oracle, contribPoints);

				if (Config.DEBUG)
					_log.info("SevenSignsFestival: This is the highest score overall so far for the " + getFestivalName(festivalId)
							+ " festival!");
			}

			saveFestivalData(true);

			return true;
		}

		return false;
	}

/**
	 * Set the final score details for the last participants of the specified festival data.
	 * Returns true if the score is higher than that previously recorded this cycle.
	 *
	 * @param player
	 * @param oracle
	 * @param festivalId
	 * @param offeringScore
	 * @return boolean isHighestScore
	 */
	public boolean setFinalScore(L2PcInstance player, int oracle, int festivalId, long offeringScore)
	{
		List<String> partyMembers;

		int currDawnHighScore = getHighestScore(SevenSigns.CABAL_DAWN, festivalId);
		int currDuskHighScore = getHighestScore(SevenSigns.CABAL_DUSK, festivalId);

		int thisCabalHighScore = 0;
		int otherCabalHighScore = 0;

		if (oracle == SevenSigns.CABAL_DAWN)
		{
			thisCabalHighScore = currDawnHighScore;
			otherCabalHighScore = currDuskHighScore;

			_dawnFestivalScores.put(festivalId, offeringScore);
		}
		else
		{
			thisCabalHighScore = currDuskHighScore;
			otherCabalHighScore = currDawnHighScore;

			_duskFestivalScores.put(festivalId, offeringScore);
		}

		StatsSet currFestData = getHighestScoreData(oracle, festivalId);

		// Check if this is the highest score for this level range so far for the player's cabal.
		if (offeringScore > thisCabalHighScore)
		{
			// If the current score is greater than that for the other cabal,
			// then they already have the points from this festival.
			if (thisCabalHighScore < otherCabalHighScore)
				return false;

			List<Integer> prevParticipants = getPreviousParticipants(oracle, festivalId);
			partyMembers = new ArrayList<String>(prevParticipants.size());

			// Record a string list of the party members involved.
			for (Integer partyMember : prevParticipants)
				partyMembers.add(CharNameTable.getInstance().getNameById(partyMember));

			// Update the highest scores and party list.
			currFestData.set("date", String.valueOf(System.currentTimeMillis()));
			currFestData.set("score", offeringScore);
			currFestData.set("members", Util.implodeString(partyMembers, ","));

			if (Config.DEBUG)
				_log.info("SevenSignsFestival: " + player.getName() + "'s party has the highest score (" + offeringScore + ") so far for "
						+ SevenSigns.getCabalName(oracle) + " in " + getFestivalName(festivalId));

			// Only add the score to the cabal's overall if it's higher than the other cabal's score.
			if (offeringScore > otherCabalHighScore)
			{
				int contribPoints = FESTIVAL_LEVEL_SCORES[festivalId];

				// Give this cabal the festival points, while deducting them from the other.
				SevenSigns.getInstance().addFestivalScore(oracle, contribPoints);

				if (Config.DEBUG)
					_log.info("SevenSignsFestival: This is the highest score overall so far for the " + getFestivalName(festivalId)
							+ " festival!");
			}

			saveFestivalData(true);

			return true;
		}

		return false;
	}

Replace Generic With Diamond ArrayList<String> with ArrayList<> in method public setFinalScore(player L2PcInstance, oracle int, festivalId int, offeringScore long) : boolean from class com.l2jserver.gameserver.SevenSignsFestival


	protected ForumsBBSManager()
	{
		_table = new FastList<>();

		Connection con = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement("SELECT forum_id FROM forums WHERE forum_type=0");
			ResultSet result = statement.executeQuery();
			while (result.next())
			{
				int forumId = result.getInt("forum_id");
				Forum f = new Forum(forumId, null);
				addForum(f);
			}
			result.close();
			statement.close();
		}
		catch (Exception e)
		{
			_log.log(Level.WARNING, "Data error on Forum (root): " + e.getMessage(), e);
		}
		finally
		{
			L2DatabaseFactory.close(con);
		}
	}

	protected ForumsBBSManager()
	{
		_table = new FastList<Forum>();

		Connection con = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement("SELECT forum_id FROM forums WHERE forum_type=0");
			ResultSet result = statement.executeQuery();
			while (result.next())
			{
				int forumId = result.getInt("forum_id");
				Forum f = new Forum(forumId, null);
				addForum(f);
			}
			result.close();
			statement.close();
		}
		catch (Exception e)
		{
			_log.log(Level.WARNING, "Data error on Forum (root): " + e.getMessage(), e);
		}
		finally
		{
			L2DatabaseFactory.close(con);
		}
	}

Replace Generic With Diamond FastList<Forum> with FastList<> in method protected ForumsBBSManager() from class com.l2jserver.gameserver.communitybbs.Manager.ForumsBBSManager


	protected PostBBSManager()
	{
		_postByTopic = new FastMap<>();
	}

	protected PostBBSManager()
	{
		_postByTopic = new FastMap<Topic, Post>();
	}

Replace Generic With Diamond FastMap<Topic,Post> with FastMap<> in method protected PostBBSManager() from class com.l2jserver.gameserver.communitybbs.Manager.PostBBSManager


	public void changeCommunityBoard()
	{
		final FastList<L2PcInstance> sortedPlayers = new FastList<>();
		final TIntObjectIterator<L2PcInstance> it = L2World.getInstance().getAllPlayers().iterator();
		while (it.hasNext())
		{
			it.advance();
			if (it.value() != null)
			{
				sortedPlayers.add(it.value());
			}
		}
		Collections.sort(sortedPlayers, playerNameComparator);

		_onlinePlayers.clear();
		_onlineCount = 0;
		_onlineCountGm = 0;

		for (L2PcInstance player : sortedPlayers)
		{
			addOnlinePlayer(player);
		}

		_communityPages.clear();
		writeCommunityPages();
	}

	public void changeCommunityBoard()
	{
		final FastList<L2PcInstance> sortedPlayers = new FastList<L2PcInstance>();
		final TIntObjectIterator<L2PcInstance> it = L2World.getInstance().getAllPlayers().iterator();
		while (it.hasNext())
		{
			it.advance();
			if (it.value() != null)
			{
				sortedPlayers.add(it.value());
			}
		}
		Collections.sort(sortedPlayers, playerNameComparator);

		_onlinePlayers.clear();
		_onlineCount = 0;
		_onlineCountGm = 0;

		for (L2PcInstance player : sortedPlayers)
		{
			addOnlinePlayer(player);
		}

		_communityPages.clear();
		writeCommunityPages();
	}

Replace Generic With Diamond FastList<L2PcInstance> with FastList<> in method public changeCommunityBoard() : void from class com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager


	protected TopicBBSManager()
	{
		_table = new FastList<>();
		_maxId = new FastMap<Forum, Integer>().shared();
	}

	protected TopicBBSManager()
	{
		_table = new FastList<Topic>();
		_maxId = new FastMap<Forum, Integer>().shared();
	}

Replace Generic With Diamond FastList<Topic> with FastList<> in method protected TopicBBSManager() from class com.l2jserver.gameserver.communitybbs.Manager.TopicBBSManager


	/**
	 * Returns the stat and basestat boni for a given augmentation id
	 * @param augmentationId
	 * @return
	 */
	public FastList<AugStat> getAugStatsById(int augmentationId)
	{
		FastList<AugStat> temp = new FastList<>();
		// An augmentation id contains 2 short values so we have to separate them here
		// both values contain a number from 1-16380, the first 14560 values are stats
		// the 14560 stats are divided into 4 blocks each holding 3640 values
		// each block contains 40 subblocks holding 91 stat values
		// the first 13 values are so called Solo-stats and they have the highest stat increase possible
		// after the 13 Solo-stats come 78 combined stats (thats every possible combination of the 13 solo stats)
		// the first 12 combined stats (14-26) is the stat 1 combined with stat 2-13
		// the next 11 combined stats then are stat 2 combined with stat 3-13 and so on...
		// to get the idea have a look @ optiondata_client-e.dat - thats where the data came from :)
		int stats[] = new int[2];
		stats[0] = 0x0000FFFF & augmentationId;
		stats[1] = (augmentationId >> 16);

		for (int i = 0; i < 2; i++)
		{
			// weapon augmentation - stats
			if ((stats[i] >= STAT_START) && (stats[i] <= STAT_END))
			{
				int base = stats[i] - STAT_START;
				int color = base / STAT_BLOCKSIZE; // 4 color blocks
				int subblock = base % STAT_BLOCKSIZE; // offset in color block
				int level = subblock / STAT_SUBBLOCKSIZE; // stat level (sub-block number)
				int stat = subblock % STAT_SUBBLOCKSIZE; // offset in sub-block - stat

				byte stat1 = STATS1_MAP[stat];
				byte stat2 = STATS2_MAP[stat];
				if (stat1 == stat2) // solo stat
				{
					AugmentationStat as = _augStats.get(color).get(stat1);
					temp.add(new AugStat(as.getStat(), as.getSingleStatValue(level)));
				}
				else
				// combined stat
				{
					AugmentationStat as = _augStats.get(color).get(stat1);
					temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
					as = _augStats.get(color).get(stat2);
					temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
				}
			}
			// its a base stat
			else if ((stats[i] >= BASESTAT_STR) && (stats[i] <= BASESTAT_MEN))
			{
				switch (stats[i])
				{
					case BASESTAT_STR:
						temp.add(new AugStat(Stats.STAT_STR, 1.0f));
						break;
					case BASESTAT_CON:
						temp.add(new AugStat(Stats.STAT_CON, 1.0f));
						break;
					case BASESTAT_INT:
						temp.add(new AugStat(Stats.STAT_INT, 1.0f));
						break;
					case BASESTAT_MEN:
						temp.add(new AugStat(Stats.STAT_MEN, 1.0f));
						break;
				}
			}
			// accessory augmentation
			// 3 areas for rings, earrings and necklaces
			// each area consist of 10 blocks (level)
			// each block has skills first (18 or 24 for necklaces)
			// and sub-block for stats next
			else if ((stats[i] >= ACC_START) && (stats[i] <= ACC_END))
			{
				int base, level, subblock;

				if (stats[i] <= ACC_RING_END) // rings area
				{
					base = stats[i] - ACC_RING_START; // calculate base offset
					level = base / ACC_RING_BLOCKSIZE; // stat level (block number)
					subblock = (base % ACC_RING_BLOCKSIZE) - ACC_RING_SKILLS; // skills first
				}
				else if (stats[i] <= ACC_EAR_END) // earrings area
				{
					base = stats[i] - ACC_EAR_START;
					level = base / ACC_EAR_BLOCKSIZE;
					subblock = (base % ACC_EAR_BLOCKSIZE) - ACC_EAR_SKILLS;
				}
				else
				// necklaces
				{
					base = stats[i] - ACC_NECK_START;
					level = base / ACC_NECK_BLOCKSIZE;
					subblock = (base % ACC_NECK_BLOCKSIZE) - ACC_NECK_SKILLS;
				}

				if (subblock >= 0) // stat, not skill
				{
					int color = subblock / ACC_STAT_SUBBLOCKSIZE;
					int stat = subblock % ACC_STAT_SUBBLOCKSIZE;
					byte stat1 = ACC_STATS1_MAP[stat];
					byte stat2 = ACC_STATS2_MAP[stat];
					if (stat1 == stat2) // solo
					{
						AugmentationStat as = _augAccStats.get(color).get(stat1);
						temp.add(new AugStat(as.getStat(), as.getSingleStatValue(level)));
					}
					else
					// combined
					{
						AugmentationStat as = _augAccStats.get(color).get(stat1);
						temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
						as = _augAccStats.get(color).get(stat2);
						temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
					}
				}
			}
		}

		return temp;
	}

	/**
	 * Returns the stat and basestat boni for a given augmentation id
	 * @param augmentationId
	 * @return
	 */
	public FastList<AugStat> getAugStatsById(int augmentationId)
	{
		FastList<AugStat> temp = new FastList<AugStat>();
		// An augmentation id contains 2 short values so we have to separate them here
		// both values contain a number from 1-16380, the first 14560 values are stats
		// the 14560 stats are divided into 4 blocks each holding 3640 values
		// each block contains 40 subblocks holding 91 stat values
		// the first 13 values are so called Solo-stats and they have the highest stat increase possible
		// after the 13 Solo-stats come 78 combined stats (thats every possible combination of the 13 solo stats)
		// the first 12 combined stats (14-26) is the stat 1 combined with stat 2-13
		// the next 11 combined stats then are stat 2 combined with stat 3-13 and so on...
		// to get the idea have a look @ optiondata_client-e.dat - thats where the data came from :)
		int stats[] = new int[2];
		stats[0] = 0x0000FFFF & augmentationId;
		stats[1] = (augmentationId >> 16);

		for (int i = 0; i < 2; i++)
		{
			// weapon augmentation - stats
			if ((stats[i] >= STAT_START) && (stats[i] <= STAT_END))
			{
				int base = stats[i] - STAT_START;
				int color = base / STAT_BLOCKSIZE; // 4 color blocks
				int subblock = base % STAT_BLOCKSIZE; // offset in color block
				int level = subblock / STAT_SUBBLOCKSIZE; // stat level (sub-block number)
				int stat = subblock % STAT_SUBBLOCKSIZE; // offset in sub-block - stat

				byte stat1 = STATS1_MAP[stat];
				byte stat2 = STATS2_MAP[stat];
				if (stat1 == stat2) // solo stat
				{
					AugmentationStat as = _augStats.get(color).get(stat1);
					temp.add(new AugStat(as.getStat(), as.getSingleStatValue(level)));
				}
				else
				// combined stat
				{
					AugmentationStat as = _augStats.get(color).get(stat1);
					temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
					as = _augStats.get(color).get(stat2);
					temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
				}
			}
			// its a base stat
			else if ((stats[i] >= BASESTAT_STR) && (stats[i] <= BASESTAT_MEN))
			{
				switch (stats[i])
				{
					case BASESTAT_STR:
						temp.add(new AugStat(Stats.STAT_STR, 1.0f));
						break;
					case BASESTAT_CON:
						temp.add(new AugStat(Stats.STAT_CON, 1.0f));
						break;
					case BASESTAT_INT:
						temp.add(new AugStat(Stats.STAT_INT, 1.0f));
						break;
					case BASESTAT_MEN:
						temp.add(new AugStat(Stats.STAT_MEN, 1.0f));
						break;
				}
			}
			// accessory augmentation
			// 3 areas for rings, earrings and necklaces
			// each area consist of 10 blocks (level)
			// each block has skills first (18 or 24 for necklaces)
			// and sub-block for stats next
			else if ((stats[i] >= ACC_START) && (stats[i] <= ACC_END))
			{
				int base, level, subblock;

				if (stats[i] <= ACC_RING_END) // rings area
				{
					base = stats[i] - ACC_RING_START; // calculate base offset
					level = base / ACC_RING_BLOCKSIZE; // stat level (block number)
					subblock = (base % ACC_RING_BLOCKSIZE) - ACC_RING_SKILLS; // skills first
				}
				else if (stats[i] <= ACC_EAR_END) // earrings area
				{
					base = stats[i] - ACC_EAR_START;
					level = base / ACC_EAR_BLOCKSIZE;
					subblock = (base % ACC_EAR_BLOCKSIZE) - ACC_EAR_SKILLS;
				}
				else
				// necklaces
				{
					base = stats[i] - ACC_NECK_START;
					level = base / ACC_NECK_BLOCKSIZE;
					subblock = (base % ACC_NECK_BLOCKSIZE) - ACC_NECK_SKILLS;
				}

				if (subblock >= 0) // stat, not skill
				{
					int color = subblock / ACC_STAT_SUBBLOCKSIZE;
					int stat = subblock % ACC_STAT_SUBBLOCKSIZE;
					byte stat1 = ACC_STATS1_MAP[stat];
					byte stat2 = ACC_STATS2_MAP[stat];
					if (stat1 == stat2) // solo
					{
						AugmentationStat as = _augAccStats.get(color).get(stat1);
						temp.add(new AugStat(as.getStat(), as.getSingleStatValue(level)));
					}
					else
					// combined
					{
						AugmentationStat as = _augAccStats.get(color).get(stat1);
						temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
						as = _augAccStats.get(color).get(stat2);
						temp.add(new AugStat(as.getStat(), as.getCombinedStatValue(level)));
					}
				}
			}
		}

		return temp;
	}

Replace Generic With Diamond FastList<AugStat> with FastList<> in method public getAugStatsById(augmentationId int) : FastList<AugStat> from class com.l2jserver.gameserver.datatables.AugmentationData


	public void putDoor(L2DoorInstance door, int region)
	{
		_doors.put(door.getDoorId(), door);

		if (_regions.contains(region))
			_regions.get(region).add(door);
		else
		{
			final ArrayList<L2DoorInstance> list = new ArrayList<>();
			list.add(door);
			_regions.put(region, list);
		}
	}

	public void putDoor(L2DoorInstance door, int region)
	{
		_doors.put(door.getDoorId(), door);

		if (_regions.contains(region))
			_regions.get(region).add(door);
		else
		{
			final ArrayList<L2DoorInstance> list = new ArrayList<L2DoorInstance>();
			list.add(door);
			_regions.put(region, list);
		}
	}

Replace Generic With Diamond ArrayList<L2DoorInstance> with ArrayList<> in method public putDoor(door L2DoorInstance, region int) : void from class com.l2jserver.gameserver.datatables.DoorTable


	public static void addDoorGroup(String groupName, int doorId)
	{
		Set<Integer> set = _groups.get(groupName.hashCode());
		if (set == null)
		{
			set = new HashSet<>();
			set.add(doorId);
			_groups.put(groupName.hashCode(), set);
		}
		else
		{
			set.add(doorId);
		}
	}

	public static void addDoorGroup(String groupName, int doorId)
	{
		Set<Integer> set = _groups.get(groupName.hashCode());
		if (set == null)
		{
			set = new HashSet<Integer>();
			set.add(doorId);
			_groups.put(groupName.hashCode(), set);
		}
		else
		{
			set.add(doorId);
		}
	}

Replace Generic With Diamond HashSet<Integer> with HashSet<> in method public addDoorGroup(groupName String, doorId int) : void from class com.l2jserver.gameserver.datatables.DoorTable


	/**
	 * Gets the fish.
	 * @param level the fish Level
	 * @param group the fish Group
	 * @param grade the fish Grade
	 * @return List of Fish that can be fished
	 */
	public List<L2Fish> getFish(int level, int group, int grade)
	{
		final ArrayList<L2Fish> result = new ArrayList<>();
		Map<Integer, L2Fish> fish = null;
		switch (grade)
		{
			case 0:
			{
				fish = _fishEasy;
				break;
			}
			case 1:
			{
				fish = _fishNormal;
				break;
			}
			case 2:
			{
				fish = _fishHard;
				break;
			}
			default:
			{
				_log.warning(getClass().getSimpleName() + ": Unmanaged fish grade!");
				return result;
			}
		}

		for (L2Fish f : fish.values())
		{
			if ((f.getFishLevel() != level) || (f.getFishGroup() != group))
			{
				continue;
			}
			result.add(f);
		}

		if (result.isEmpty())
		{
			_log.warning(getClass().getSimpleName() + ": Cannot find any fish for level: " + level + " group: " + group + " and grade: " + grade + "!");
		}
		return result;
	}

	/**
	 * Gets the fish.
	 * @param level the fish Level
	 * @param group the fish Group
	 * @param grade the fish Grade
	 * @return List of Fish that can be fished
	 */
	public List<L2Fish> getFish(int level, int group, int grade)
	{
		final ArrayList<L2Fish> result = new ArrayList<L2Fish>();
		Map<Integer, L2Fish> fish = null;
		switch (grade)
		{
			case 0:
			{
				fish = _fishEasy;
				break;
			}
			case 1:
			{
				fish = _fishNormal;
				break;
			}
			case 2:
			{
				fish = _fishHard;
				break;
			}
			default:
			{
				_log.warning(getClass().getSimpleName() + ": Unmanaged fish grade!");
				return result;
			}
		}

		for (L2Fish f : fish.values())
		{
			if ((f.getFishLevel() != level) || (f.getFishGroup() != group))
			{
				continue;
			}
			result.add(f);
		}

		if (result.isEmpty())
		{
			_log.warning(getClass().getSimpleName() + ": Cannot find any fish for level: " + level + " group: " + group + " and grade: " + grade + "!");
		}
		return result;
	}

Replace Generic With Diamond ArrayList<L2Fish> with ArrayList<> in method public getFish(level int, group int, grade int) : List<L2Fish> from class com.l2jserver.gameserver.datatables.FishData


	/**
	 * Create and Load the Newbie Helper Buff list from SQL Table helper_buff_list
	 */
	protected HelperBuffTable()
	{
		_helperBuff = new FastList<>();
		restoreHelperBuffData();

	}

	/**
	 * Create and Load the Newbie Helper Buff list from SQL Table helper_buff_list
	 */
	protected HelperBuffTable()
	{
		_helperBuff = new FastList<L2HelperBuff>();
		restoreHelperBuffData();

	}

Replace Generic With Diamond FastList<L2HelperBuff> with FastList<> in method protected HelperBuffTable() from class com.l2jserver.gameserver.datatables.HelperBuffTable


	protected HerbDropTable()
	{
		_herbGroups = new TIntObjectHashMap<>();
		restoreData();
	}

	protected HerbDropTable()
	{
		_herbGroups = new TIntObjectHashMap<FastList<L2DropCategory>>();
		restoreData();
	}

Replace Generic With Diamond TIntObjectHashMap<FastList<L2DropCategory>> with TIntObjectHashMap<> in method protected HerbDropTable() from class com.l2jserver.gameserver.datatables.HerbDropTable


	protected LevelUpData()
	{
		_lvlTable = new TIntObjectHashMap<>();
		Connection con = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement(SELECT_ALL);
			ResultSet rset = statement.executeQuery();
			L2LvlupData lvlDat;

			while (rset.next())
			{
				lvlDat = new L2LvlupData();
				lvlDat.setClassid(rset.getInt(CLASS_ID));
				lvlDat.setClassLvl(rset.getInt(CLASS_LVL));
				lvlDat.setClassHpBase(rset.getFloat(HP_BASE));
				lvlDat.setClassHpAdd(rset.getFloat(HP_ADD));
				lvlDat.setClassHpModifier(rset.getFloat(HP_MOD));
				lvlDat.setClassCpBase(rset.getFloat(CP_BASE));
				lvlDat.setClassCpAdd(rset.getFloat(CP_ADD));
				lvlDat.setClassCpModifier(rset.getFloat(CP_MOD));
				lvlDat.setClassMpBase(rset.getFloat(MP_BASE));
				lvlDat.setClassMpAdd(rset.getFloat(MP_ADD));
				lvlDat.setClassMpModifier(rset.getFloat(MP_MOD));

				_lvlTable.put(lvlDat.getClassid(), lvlDat);
			}

			rset.close();
			statement.close();

			_log.info("LevelUpData: Loaded " + _lvlTable.size() + " Character Level Up Templates.");
		}
		catch (Exception e)
		{
			_log.log(Level.SEVERE, "Error loading Level Up data.", e);
		}
		finally
		{
			L2DatabaseFactory.close(con);
		}
	}

	protected LevelUpData()
	{
		_lvlTable = new TIntObjectHashMap<L2LvlupData>();
		Connection con = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement(SELECT_ALL);
			ResultSet rset = statement.executeQuery();
			L2LvlupData lvlDat;

			while (rset.next())
			{
				lvlDat = new L2LvlupData();
				lvlDat.setClassid(rset.getInt(CLASS_ID));
				lvlDat.setClassLvl(rset.getInt(CLASS_LVL));
				lvlDat.setClassHpBase(rset.getFloat(HP_BASE));
				lvlDat.setClassHpAdd(rset.getFloat(HP_ADD));
				lvlDat.setClassHpModifier(rset.getFloat(HP_MOD));
				lvlDat.setClassCpBase(rset.getFloat(CP_BASE));
				lvlDat.setClassCpAdd(rset.getFloat(CP_ADD));
				lvlDat.setClassCpModifier(rset.getFloat(CP_MOD));
				lvlDat.setClassMpBase(rset.getFloat(MP_BASE));
				lvlDat.setClassMpAdd(rset.getFloat(MP_ADD));
				lvlDat.setClassMpModifier(rset.getFloat(MP_MOD));

				_lvlTable.put(lvlDat.getClassid(), lvlDat);
			}

			rset.close();
			statement.close();

			_log.info("LevelUpData: Loaded " + _lvlTable.size() + " Character Level Up Templates.");
		}
		catch (Exception e)
		{
			_log.log(Level.SEVERE, "Error loading Level Up data.", e);
		}
		finally
		{
			L2DatabaseFactory.close(con);
		}
	}

Replace Generic With Diamond TIntObjectHashMap<L2LvlupData> with TIntObjectHashMap<> in method protected LevelUpData() from class com.l2jserver.gameserver.datatables.LevelUpData


	protected MultiSell()
	{
		_entries = new TIntObjectHashMap<>();
		load();
	}

	protected MultiSell()
	{
		_entries = new TIntObjectHashMap<ListContainer>();
		load();
	}

Replace Generic With Diamond TIntObjectHashMap<ListContainer> with TIntObjectHashMap<> in method protected MultiSell() from class com.l2jserver.gameserver.datatables.MultiSell


	protected SkillTable()
	{
		_skills = new TIntObjectHashMap<>();
		_skillMaxLevel = new TIntIntHashMap();
		_enchantable = new TIntArrayList();
		load();
	}

	protected SkillTable()
	{
		_skills = new TIntObjectHashMap<L2Skill>();
		_skillMaxLevel = new TIntIntHashMap();
		_enchantable = new TIntArrayList();
		load();
	}

Replace Generic With Diamond TIntObjectHashMap<L2Skill> with TIntObjectHashMap<> in method protected SkillTable() from class com.l2jserver.gameserver.datatables.SkillTable


	protected SummonSkillsTable()
	{
		_skillTrees = new FastMap<>();
		load();
	}

	protected SummonSkillsTable()
	{
		_skillTrees = new FastMap<Integer, Map<Integer, L2PetSkillLearn>>();
		load();
	}

Replace Generic With Diamond FastMap<Integer,Map<Integer,L2PetSkillLearn>> with FastMap<> in method protected SummonSkillsTable() from class com.l2jserver.gameserver.datatables.SummonSkillsTable


	protected DocumentBase(File pFile)
	{
		_file = pFile;
		_tables = new FastMap<>();
	}

	protected DocumentBase(File pFile)
	{
		_file = pFile;
		_tables = new FastMap<String, String[]>();
	}

Replace Generic With Diamond FastMap<String,String[]> with FastMap<> in method protected DocumentBase(pFile File) from class com.l2jserver.gameserver.engines.DocumentBase


	private void makeSkills()
	{
		int count = 0;
		_currentSkill.currentSkills = new FastList<>(_currentSkill.sets.length+_currentSkill.enchsets1.length+_currentSkill.enchsets2.length+_currentSkill.enchsets3.length+_currentSkill.enchsets4.length+_currentSkill.enchsets5.length+_currentSkill.enchsets6.length+_currentSkill.enchsets7.length+_currentSkill.enchsets8.length);

		for (int i=0; i < _currentSkill.sets.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(i, _currentSkill.sets[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.sets[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.sets[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.sets[i]).getDisplayId()+"level"+_currentSkill.sets[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.sets[i]).getLevel(), e);
			}
		}
		int _count = count;
		for (int i=0; i < _currentSkill.enchsets1.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets1[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets1[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets1[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets1[i]).getDisplayId()+" level="+_currentSkill.enchsets1[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets1[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets2.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets2[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets2[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets2[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets2[i]).getDisplayId()+" level="+_currentSkill.enchsets2[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets2[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets3.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets3[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets3[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets3[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets3[i]).getDisplayId()+" level="+_currentSkill.enchsets3[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets3[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets4.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets4[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets4[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets4[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets4[i]).getDisplayId()+" level="+_currentSkill.enchsets4[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets4[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets5.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets5[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets5[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets5[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets5[i]).getDisplayId()+" level="+_currentSkill.enchsets5[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets5[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets6.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets6[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets6[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets6[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets6[i]).getDisplayId()+" level="+_currentSkill.enchsets6[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets6[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets7.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets7[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets7[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets7[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets7[i]).getDisplayId()+" level="+_currentSkill.enchsets7[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets7[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets8.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets8[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets8[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets8[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets8[i]).getDisplayId()+" level="+_currentSkill.enchsets8[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets8[i]).getLevel(), e);
			}
		}
	}

	private void makeSkills()
	{
		int count = 0;
		_currentSkill.currentSkills = new FastList<L2Skill>(_currentSkill.sets.length+_currentSkill.enchsets1.length+_currentSkill.enchsets2.length+_currentSkill.enchsets3.length+_currentSkill.enchsets4.length+_currentSkill.enchsets5.length+_currentSkill.enchsets6.length+_currentSkill.enchsets7.length+_currentSkill.enchsets8.length);

		for (int i=0; i < _currentSkill.sets.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(i, _currentSkill.sets[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.sets[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.sets[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.sets[i]).getDisplayId()+"level"+_currentSkill.sets[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.sets[i]).getLevel(), e);
			}
		}
		int _count = count;
		for (int i=0; i < _currentSkill.enchsets1.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets1[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets1[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets1[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets1[i]).getDisplayId()+" level="+_currentSkill.enchsets1[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets1[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets2.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets2[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets2[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets2[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets2[i]).getDisplayId()+" level="+_currentSkill.enchsets2[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets2[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets3.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets3[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets3[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets3[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets3[i]).getDisplayId()+" level="+_currentSkill.enchsets3[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets3[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets4.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets4[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets4[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets4[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets4[i]).getDisplayId()+" level="+_currentSkill.enchsets4[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets4[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets5.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets5[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets5[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets5[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets5[i]).getDisplayId()+" level="+_currentSkill.enchsets5[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets5[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets6.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets6[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets6[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets6[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets6[i]).getDisplayId()+" level="+_currentSkill.enchsets6[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets6[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets7.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets7[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets7[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets7[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets7[i]).getDisplayId()+" level="+_currentSkill.enchsets7[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets7[i]).getLevel(), e);
			}
		}
		_count = count;
		for (int i=0; i < _currentSkill.enchsets8.length; i++)
		{
			try
			{
				_currentSkill.currentSkills.add(_count+i, _currentSkill.enchsets8[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets8[i]));
				count++;
			}
			catch (Exception e)
			{
				_log.log(Level.SEVERE, "Skill id="+_currentSkill.enchsets8[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets8[i]).getDisplayId()+" level="+_currentSkill.enchsets8[i].getEnum("skillType", L2SkillType.class).makeSkill(_currentSkill.enchsets8[i]).getLevel(), e);
			}
		}
	}

Replace Generic With Diamond FastList<L2Skill> with FastList<> in method private makeSkills() : void from class com.l2jserver.gameserver.engines.skills.DocumentSkill


	protected ActionHandler()
	{
		_actions = new FastMap<>();
	}

	protected ActionHandler()
	{
		_actions = new FastMap<InstanceType, IActionHandler>();
	}

Replace Generic With Diamond FastMap<InstanceType,IActionHandler> with FastMap<> in method protected ActionHandler() from class com.l2jserver.gameserver.handler.ActionHandler


	protected ActionShiftHandler()
	{
		_actionsShift = new FastMap<>();
	}

	protected ActionShiftHandler()
	{
		_actionsShift = new FastMap<InstanceType, IActionHandler>();
	}

Replace Generic With Diamond FastMap<InstanceType,IActionHandler> with FastMap<> in method protected ActionShiftHandler() from class com.l2jserver.gameserver.handler.ActionShiftHandler


	protected AdminCommandHandler()
	{
		_datatable = new TIntObjectHashMap<>();
	}

	protected AdminCommandHandler()
	{
		_datatable = new TIntObjectHashMap<IAdminCommandHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<IAdminCommandHandler> with TIntObjectHashMap<> in method protected AdminCommandHandler() from class com.l2jserver.gameserver.handler.AdminCommandHandler


	protected BypassHandler()
	{
		_datatable = new TIntObjectHashMap<>();
	}

	protected BypassHandler()
	{
		_datatable = new TIntObjectHashMap<IBypassHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<IBypassHandler> with TIntObjectHashMap<> in method protected BypassHandler() from class com.l2jserver.gameserver.handler.BypassHandler


	/**
	 * Singleton constructor
	 */
	protected ChatHandler()
	{
		_datatable = new TIntObjectHashMap<>();
	}

	/**
	 * Singleton constructor
	 */
	protected ChatHandler()
	{
		_datatable = new TIntObjectHashMap<IChatHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<IChatHandler> with TIntObjectHashMap<> in method protected ChatHandler() from class com.l2jserver.gameserver.handler.ChatHandler


	protected EffectHandler()
	{
		_handlers = new FastMap<>();
	}

	protected EffectHandler()
	{
		_handlers = new FastMap<Integer, Class<? extends L2Effect>>();
	}

Replace Generic With Diamond FastMap<Integer,Class<? extends L2Effect>> with FastMap<> in method protected EffectHandler() from class com.l2jserver.gameserver.handler.EffectHandler


	/**
	 * Constructor of ItemHandler
	 */
	protected ItemHandler()
	{
		_datatable = new TIntObjectHashMap<>();
	}

	/**
	 * Constructor of ItemHandler
	 */
	protected ItemHandler()
	{
		_datatable = new TIntObjectHashMap<IItemHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<IItemHandler> with TIntObjectHashMap<> in method protected ItemHandler() from class com.l2jserver.gameserver.handler.ItemHandler


	protected SkillHandler()
	{
		_datatable = new TIntObjectHashMap<>();
	}

	protected SkillHandler()
	{
		_datatable = new TIntObjectHashMap<ISkillHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<ISkillHandler> with TIntObjectHashMap<> in method protected SkillHandler() from class com.l2jserver.gameserver.handler.SkillHandler


	protected TargetHandler()
	{
		_datatable = new FastMap<>();
	}

	protected TargetHandler()
	{
		_datatable = new FastMap<Enum<L2TargetType>, ITargetTypeHandler>();
	}

Replace Generic With Diamond FastMap<Enum<L2TargetType>,ITargetTypeHandler> with FastMap<> in method protected TargetHandler() from class com.l2jserver.gameserver.handler.TargetHandler


	protected TelnetHandler()
	{
		_telnetHandlers = new TIntObjectHashMap<>();
	}

	protected TelnetHandler()
	{
		_telnetHandlers = new TIntObjectHashMap<ITelnetHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<ITelnetHandler> with TIntObjectHashMap<> in method protected TelnetHandler() from class com.l2jserver.gameserver.handler.TelnetHandler


	protected UserCommandHandler()
	{
		_datatable = new TIntObjectHashMap<>();
	}

	protected UserCommandHandler()
	{
		_datatable = new TIntObjectHashMap<IUserCommandHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<IUserCommandHandler> with TIntObjectHashMap<> in method protected UserCommandHandler() from class com.l2jserver.gameserver.handler.UserCommandHandler


	protected VoicedCommandHandler()
	{
		_datatable = new TIntObjectHashMap<>();
	}

	protected VoicedCommandHandler()
	{
		_datatable = new TIntObjectHashMap<IVoicedCommandHandler>();
	}

Replace Generic With Diamond TIntObjectHashMap<IVoicedCommandHandler> with TIntObjectHashMap<> in method protected VoicedCommandHandler() from class com.l2jserver.gameserver.handler.VoicedCommandHandler


	protected AntiFeedManager()
	{
		_lastDeathTimes = new FastMap<Integer,Long>().shared();
		_eventIPs = new TIntObjectHashMap<>();
	}

	protected AntiFeedManager()
	{
		_lastDeathTimes = new FastMap<Integer,Long>().shared();
		_eventIPs = new TIntObjectHashMap<Map<Integer, Connections>>();
	}

Replace Generic With Diamond TIntObjectHashMap<Map<Integer,Connections>> with TIntObjectHashMap<> in method protected AntiFeedManager() from class com.l2jserver.gameserver.instancemanager.AntiFeedManager


	protected AuctionManager()
	{
		_auctions = new FastList<>();
		load();
	}

	protected AuctionManager()
	{
		_auctions = new FastList<Auction>();
		load();
	}

Replace Generic With Diamond FastList<Auction> with FastList<> in method protected AuctionManager() from class com.l2jserver.gameserver.instancemanager.AuctionManager


	protected DuelManager()
	{
		_duels = new FastList<>();
	}

	protected DuelManager()
	{
		_duels = new FastList<Duel>();
	}

Replace Generic With Diamond FastList<Duel> with FastList<> in method protected DuelManager() from class com.l2jserver.gameserver.instancemanager.DuelManager


	protected GlobalVariablesManager()
	{
		_variablesMap = new FastMap<>();

		loadVars();
	}

	protected GlobalVariablesManager()
	{
		_variablesMap = new FastMap<String, String>();

		loadVars();
	}

Replace Generic With Diamond FastMap<String,String> with FastMap<> in method protected GlobalVariablesManager() from class com.l2jserver.gameserver.instancemanager.GlobalVariablesManager


	protected HellboundManager()
	{
		_population = new FastList<>();

		loadData();
		loadSpawns();
	}

	protected HellboundManager()
	{
		_population = new FastList<HellboundSpawn>();

		loadData();
		loadSpawns();
	}

Replace Generic With Diamond FastList<HellboundSpawn> with FastList<> in method protected HellboundManager() from class com.l2jserver.gameserver.instancemanager.HellboundManager


	protected ItemAuctionManager()
	{
		_managerInstances = new TIntObjectHashMap<>();
		_auctionIds = new AtomicInteger(1);

		if (!Config.ALT_ITEM_AUCTION_ENABLED)
		{
			_log.log(Level.INFO, "ItemAuctionManager: Disabled by config.");
			return;
		}

		Connection con = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement("SELECT auctionId FROM item_auction ORDER BY auctionId DESC LIMIT 0, 1");
			ResultSet rset = statement.executeQuery();

			if (rset.next())
				_auctionIds.set(rset.getInt(1) + 1);

			rset.close();
			statement.close();
		}
		catch (final SQLException e)
		{
			_log.log(Level.SEVERE, "ItemAuctionManager: Failed loading auctions.", e);
		}
		finally
		{
			L2DatabaseFactory.close(con);
		}

		final File file = new File(Config.DATAPACK_ROOT + "/data/ItemAuctions.xml");
		if (!file.exists())
		{
			_log.log(Level.WARNING, "ItemAuctionManager: Missing ItemAuctions.xml!");
			return;
		}

		final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setValidating(false);
		factory.setIgnoringComments(true);

		try
		{
			final Document doc = factory.newDocumentBuilder().parse(file);
			for (Node na = doc.getFirstChild(); na != null; na = na.getNextSibling())
			{
				if ("list".equalsIgnoreCase(na.getNodeName()))
				{
					for (Node nb = na.getFirstChild(); nb != null; nb = nb.getNextSibling())
					{
						if ("instance".equalsIgnoreCase(nb.getNodeName()))
						{
							final NamedNodeMap nab = nb.getAttributes();
							final int instanceId = Integer.parseInt(nab.getNamedItem("id").getNodeValue());

							if (_managerInstances.containsKey(instanceId))
								throw new Exception("Dublicated instanceId " + instanceId);

							final ItemAuctionInstance instance = new ItemAuctionInstance(instanceId, _auctionIds, nb);
							_managerInstances.put(instanceId, instance);
						}
					}
				}
			}
			_log.log(Level.INFO, "ItemAuctionManager: Loaded " + _managerInstances.size() + " instance(s).");
		}
		catch (Exception e)
		{
			_log.log(Level.SEVERE, "ItemAuctionManager: Failed loading auctions from xml.", e);
		}
	}

	protected ItemAuctionManager()
	{
		_managerInstances = new TIntObjectHashMap<ItemAuctionInstance>();
		_auctionIds = new AtomicInteger(1);

		if (!Config.ALT_ITEM_AUCTION_ENABLED)
		{
			_log.log(Level.INFO, "ItemAuctionManager: Disabled by config.");
			return;
		}

		Connection con = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement("SELECT auctionId FROM item_auction ORDER BY auctionId DESC LIMIT 0, 1");
			ResultSet rset = statement.executeQuery();

			if (rset.next())
				_auctionIds.set(rset.getInt(1) + 1);

			rset.close();
			statement.close();
		}
		catch (final SQLException e)
		{
			_log.log(Level.SEVERE, "ItemAuctionManager: Failed loading auctions.", e);
		}
		finally
		{
			L2DatabaseFactory.close(con);
		}

		final File file = new File(Config.DATAPACK_ROOT + "/data/ItemAuctions.xml");
		if (!file.exists())
		{
			_log.log(Level.WARNING, "ItemAuctionManager: Missing ItemAuctions.xml!");
			return;
		}

		final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setValidating(false);
		factory.setIgnoringComments(true);

		try
		{
			final Document doc = factory.newDocumentBuilder().parse(file);
			for (Node na = doc.getFirstChild(); na != null; na = na.getNextSibling())
			{
				if ("list".equalsIgnoreCase(na.getNodeName()))
				{
					for (Node nb = na.getFirstChild(); nb != null; nb = nb.getNextSibling())
					{
						if ("instance".equalsIgnoreCase(nb.getNodeName()))
						{
							final NamedNodeMap nab = nb.getAttributes();
							final int instanceId = Integer.parseInt(nab.getNamedItem("id").getNodeValue());

							if (_managerInstances.containsKey(instanceId))
								throw new Exception("Dublicated instanceId " + instanceId);

							final ItemAuctionInstance instance = new ItemAuctionInstance(instanceId, _auctionIds, nb);
							_managerInstances.put(instanceId, instance);
						}
					}
				}
			}
			_log.log(Level.INFO, "ItemAuctionManager: Loaded " + _managerInstances.size() + " instance(s).");
		}
		catch (Exception e)
		{
			_log.log(Level.SEVERE, "ItemAuctionManager: Failed loading auctions from xml.", e);
		}
	}

Replace Generic With Diamond TIntObjectHashMap<ItemAuctionInstance> with TIntObjectHashMap<> in method protected ItemAuctionManager() from class com.l2jserver.gameserver.instancemanager.ItemAuctionManager


	protected ItemsOnGroundManager()
	{
		if (Config.SAVE_DROPPED_ITEM)
		{
			_items = new FastList<>();
		}
		if (Config.SAVE_DROPPED_ITEM_INTERVAL > 0)
		{
			ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(_task, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL);
		}
		load();
	}

	protected ItemsOnGroundManager()
	{
		if (Config.SAVE_DROPPED_ITEM)
		{
			_items = new FastList<L2ItemInstance>();
		}
		if (Config.SAVE_DROPPED_ITEM_INTERVAL > 0)
		{
			ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(_task, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL);
		}
		load();
	}

Replace Generic With Diamond FastList<L2ItemInstance> with FastList<> in method protected ItemsOnGroundManager() from class com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager


	protected void startTerritoryWar()
	{
		if (_territoryList == null)
		{
			_log.warning("TerritoryWarManager: TerritoryList is NULL!");
			return;
		}
		FastList<Territory> activeTerritoryList = new FastList<>();
		for(Territory t : _territoryList.values())
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			if (castle != null)
			{
				if (castle.getOwnerId() > 0)
					activeTerritoryList.add(t);
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());
		}

		if (activeTerritoryList.size() < 2)
			return;

		_isTWInProgress = true;
		if (!updatePlayerTWStateFlags(false))
			return;

		// teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionTable.TeleportWhereType.Town); // Teleport to the closest town
		for(Territory t : activeTerritoryList)
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			Fort fort = FortManager.getInstance().getFortById(t.getFortId());
			// spawnControlTower(t.getCastleId()); // Spawn control tower
			if (castle != null)
			{
				t.changeNPCsSpawn(2, true);
				castle.spawnDoor(); // Spawn door
				castle.getZone().setSiegeInstance(this);
				castle.getZone().setIsActive(true);
				castle.getZone().updateZoneStatusForCharactersInside();
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());
			if (fort != null)
			{
				t.changeNPCsSpawn(1, true);
				fort.resetDoors(); // Spawn door
				fort.getZone().setSiegeInstance(this);
				fort.getZone().setIsActive(true);
				fort.getZone().updateZoneStatusForCharactersInside();
			}
			else
				_log.warning("TerritoryWarManager: Fort missing! FortId: " + t.getFortId());
			for(TerritoryNPCSpawn ward : t.getOwnedWard())
				if (ward.getNpc() != null && t.getOwnerClan() != null)
				{
					if (!ward.getNpc().isVisible())
						ward.setNPC(ward.getNpc().getSpawn().doSpawn());
					_territoryWards.add(new TerritoryWard(ward.getNpcId(), ward.getLocation().getX(), ward.getLocation().getY(), ward.getLocation().getZ(), 0, ward.getNpcId() + 13479, t.getCastleId(), ward.getNpc()));
				}
			t.getQuestDone()[0] = 0; // killed npc
			t.getQuestDone()[1] = 0; // captured wards
		}
		_participantPoints.clear();

		if (RETURN_WARDS_WHEN_TW_STARTS)
			for(TerritoryWard ward : _territoryWards)
				if (ward.getOwnerCastleId() != ward.getTerritoryId() - 80)
				{
					ward.unSpawnMe();
					ward.setNpc(addTerritoryWard(ward.getTerritoryId(), ward.getTerritoryId() - 80, ward.getOwnerCastleId(), false));
					ward.setOwnerCastleId(ward.getTerritoryId() - 80);
				}

		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.TERRITORY_WAR_HAS_BEGUN);
		Announcements.getInstance().announceToAll(sm);
	}

	protected void startTerritoryWar()
	{
		if (_territoryList == null)
		{
			_log.warning("TerritoryWarManager: TerritoryList is NULL!");
			return;
		}
		FastList<Territory> activeTerritoryList = new FastList<Territory>();
		for(Territory t : _territoryList.values())
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			if (castle != null)
			{
				if (castle.getOwnerId() > 0)
					activeTerritoryList.add(t);
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());
		}

		if (activeTerritoryList.size() < 2)
			return;

		_isTWInProgress = true;
		if (!updatePlayerTWStateFlags(false))
			return;

		// teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionTable.TeleportWhereType.Town); // Teleport to the closest town
		for(Territory t : activeTerritoryList)
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			Fort fort = FortManager.getInstance().getFortById(t.getFortId());
			// spawnControlTower(t.getCastleId()); // Spawn control tower
			if (castle != null)
			{
				t.changeNPCsSpawn(2, true);
				castle.spawnDoor(); // Spawn door
				castle.getZone().setSiegeInstance(this);
				castle.getZone().setIsActive(true);
				castle.getZone().updateZoneStatusForCharactersInside();
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());
			if (fort != null)
			{
				t.changeNPCsSpawn(1, true);
				fort.resetDoors(); // Spawn door
				fort.getZone().setSiegeInstance(this);
				fort.getZone().setIsActive(true);
				fort.getZone().updateZoneStatusForCharactersInside();
			}
			else
				_log.warning("TerritoryWarManager: Fort missing! FortId: " + t.getFortId());
			for(TerritoryNPCSpawn ward : t.getOwnedWard())
				if (ward.getNpc() != null && t.getOwnerClan() != null)
				{
					if (!ward.getNpc().isVisible())
						ward.setNPC(ward.getNpc().getSpawn().doSpawn());
					_territoryWards.add(new TerritoryWard(ward.getNpcId(), ward.getLocation().getX(), ward.getLocation().getY(), ward.getLocation().getZ(), 0, ward.getNpcId() + 13479, t.getCastleId(), ward.getNpc()));
				}
			t.getQuestDone()[0] = 0; // killed npc
			t.getQuestDone()[1] = 0; // captured wards
		}
		_participantPoints.clear();

		if (RETURN_WARDS_WHEN_TW_STARTS)
			for(TerritoryWard ward : _territoryWards)
				if (ward.getOwnerCastleId() != ward.getTerritoryId() - 80)
				{
					ward.unSpawnMe();
					ward.setNpc(addTerritoryWard(ward.getTerritoryId(), ward.getTerritoryId() - 80, ward.getOwnerCastleId(), false));
					ward.setOwnerCastleId(ward.getTerritoryId() - 80);
				}

		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.TERRITORY_WAR_HAS_BEGUN);
		Announcements.getInstance().announceToAll(sm);
	}

Replace Generic With Diamond FastList<Territory> with FastList<> in method protected startTerritoryWar() : void from class com.l2jserver.gameserver.instancemanager.TerritoryWarManager


	protected void endTerritoryWar()
	{
		_isTWInProgress = false;
		if (_territoryList == null)
		{
			_log.warning("TerritoryWarManager: TerritoryList is NULL!");
			return;
		}
		FastList<Territory> activeTerritoryList = new FastList<>();
		for(Territory t : _territoryList.values())
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			if (castle != null)
			{
				if (castle.getOwnerId() > 0)
					activeTerritoryList.add(t);
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());
		}

		if (activeTerritoryList.size() < 2)
			return;

		if (!updatePlayerTWStateFlags(true))
			return;

		if (_territoryWards != null)
		{
			for(TerritoryWard twWard : _territoryWards)
				twWard.unSpawnMe();
			_territoryWards.clear();
		}
		// teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionTable.TeleportWhereType.Town); // Teleport to the closest town
		for(Territory t : activeTerritoryList)
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			Fort fort = FortManager.getInstance().getFortById(t.getFortId());

			if (castle != null)
			{
				castle.spawnDoor();
				t.changeNPCsSpawn(2, false);
				castle.getZone().setIsActive(false);
				castle.getZone().updateZoneStatusForCharactersInside();
				castle.getZone().setSiegeInstance(null);
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());

			if (fort != null)
			{
				t.changeNPCsSpawn(1, false);
				fort.getZone().setIsActive(false);
				fort.getZone().updateZoneStatusForCharactersInside();
				fort.getZone().setSiegeInstance(null);
			}
			else
				_log.warning("TerritoryWarManager: Fort missing! FortId: " + t.getFortId());

			if (t.getHQ() != null)
				t.getHQ().deleteMe();

			for(TerritoryNPCSpawn ward : t.getOwnedWard())
				if (ward.getNpc() != null)
				{
					if (!ward.getNpc().isVisible() && SPAWN_WARDS_WHEN_TW_IS_NOT_IN_PROGRESS)
						ward.setNPC(ward.getNpc().getSpawn().doSpawn());
					else if (ward.getNpc().isVisible() && !SPAWN_WARDS_WHEN_TW_IS_NOT_IN_PROGRESS)
						ward.getNpc().decayMe();
				}
		}
		for(L2SiegeFlagInstance flag : _clanFlags.values())
			flag.deleteMe();
		_clanFlags.clear();

		for(Integer castleId:_registeredClans.keySet())
			for(L2Clan clan:_registeredClans.get(castleId))
				changeRegistration(castleId, clan.getClanId(), true);
		for(Integer castleId:_registeredMercenaries.keySet())
			for(Integer pl_objId:_registeredMercenaries.get(castleId))
				changeRegistration(castleId, pl_objId, true);
		// change next TW date
		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.TERRITORY_WAR_HAS_ENDED);
		Announcements.getInstance().announceToAll(sm);
	}

	protected void endTerritoryWar()
	{
		_isTWInProgress = false;
		if (_territoryList == null)
		{
			_log.warning("TerritoryWarManager: TerritoryList is NULL!");
			return;
		}
		FastList<Territory> activeTerritoryList = new FastList<Territory>();
		for(Territory t : _territoryList.values())
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			if (castle != null)
			{
				if (castle.getOwnerId() > 0)
					activeTerritoryList.add(t);
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());
		}

		if (activeTerritoryList.size() < 2)
			return;

		if (!updatePlayerTWStateFlags(true))
			return;

		if (_territoryWards != null)
		{
			for(TerritoryWard twWard : _territoryWards)
				twWard.unSpawnMe();
			_territoryWards.clear();
		}
		// teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionTable.TeleportWhereType.Town); // Teleport to the closest town
		for(Territory t : activeTerritoryList)
		{
			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
			Fort fort = FortManager.getInstance().getFortById(t.getFortId());

			if (castle != null)
			{
				castle.spawnDoor();
				t.changeNPCsSpawn(2, false);
				castle.getZone().setIsActive(false);
				castle.getZone().updateZoneStatusForCharactersInside();
				castle.getZone().setSiegeInstance(null);
			}
			else
				_log.warning("TerritoryWarManager: Castle missing! CastleId: " + t.getCastleId());

			if (fort != null)
			{
				t.changeNPCsSpawn(1, false);
				fort.getZone().setIsActive(false);
				fort.getZone().updateZoneStatusForCharactersInside();
				fort.getZone().setSiegeInstance(null);
			}
			else
				_log.warning("TerritoryWarManager: Fort missing! FortId: " + t.getFortId());

			if (t.getHQ() != null)
				t.getHQ().deleteMe();

			for(TerritoryNPCSpawn ward : t.getOwnedWard())
				if (ward.getNpc() != null)
				{
					if (!ward.getNpc().isVisible() && SPAWN_WARDS_WHEN_TW_IS_NOT_IN_PROGRESS)
						ward.setNPC(ward.getNpc().getSpawn().doSpawn());
					else if (ward.getNpc().isVisible() && !SPAWN_WARDS_WHEN_TW_IS_NOT_IN_PROGRESS)
						ward.getNpc().decayMe();
				}
		}
		for(L2SiegeFlagInstance flag : _clanFlags.values())
			flag.deleteMe();
		_clanFlags.clear();

		for(Integer castleId:_registeredClans.keySet())
			for(L2Clan clan:_registeredClans.get(castleId))
				changeRegistration(castleId, clan.getClanId(), true);
		for(Integer castleId:_registeredMercenaries.keySet())
			for(Integer pl_objId:_registeredMercenaries.get(castleId))
				changeRegistration(castleId, pl_objId, true);
		// change next TW date
		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.TERRITORY_WAR_HAS_ENDED);
		Announcements.getInstance().announceToAll(sm);
	}

Replace Generic With Diamond FastList<Territory> with FastList<> in method protected endTerritoryWar() : void from class com.l2jserver.gameserver.instancemanager.TerritoryWarManager


	protected TransformationManager()
	{
		_transformations = new TIntObjectHashMap<>();
	}

	protected TransformationManager()
	{
		_transformations = new TIntObjectHashMap<L2Transformation>();
	}

Replace Generic With Diamond TIntObjectHashMap<L2Transformation> with TIntObjectHashMap<> in method protected TransformationManager() from class com.l2jserver.gameserver.instancemanager.TransformationManager


	/**
	 * Add new zone
	 * @param <T>
	 * @param id
	 * @param zone
	 */
	@SuppressWarnings("unchecked")
	public <T extends L2ZoneType> void addZone(Integer id, T zone)
	{
		Map<Integer, T> map = (Map<Integer, T>) _classZones.get(zone.getClass());
		if (map == null)
		{
			map = new HashMap<>();
			map.put(id, zone);
			_classZones.put(zone.getClass(), map);
		}
		else
			map.put(id, zone);
	}

	/**
	 * Add new zone
	 * @param <T>
	 * @param id
	 * @param zone
	 */
	@SuppressWarnings("unchecked")
	public <T extends L2ZoneType> void addZone(Integer id, T zone)
	{
		Map<Integer, T> map = (Map<Integer, T>) _classZones.get(zone.getClass());
		if (map == null)
		{
			map = new HashMap<Integer, T>();
			map.put(id, zone);
			_classZones.put(zone.getClass(), map);
		}
		else
			map.put(id, zone);
	}

Replace Generic With Diamond HashMap<Integer,T> with HashMap<> in method public addZone(id Integer, zone T) : void from class com.l2jserver.gameserver.instancemanager.ZoneManager


	/**
	 * Returns all zones registered with the ZoneManager. To minimize iteration processing retrieve zones from L2WorldRegion for a specific location instead.
	 * @return zones
	 * @see #getAllZones(Class)
	 */
	@Deprecated
	public Collection<L2ZoneType> getAllZones()
	{
		List<L2ZoneType> zones = new ArrayList<>();
		for (Map<Integer, ? extends L2ZoneType> map : _classZones.values())
		{
			zones.addAll(map.values());
		}
		return zones;
	}

	/**
	 * Returns all zones registered with the ZoneManager. To minimize iteration processing retrieve zones from L2WorldRegion for a specific location instead.
	 * @return zones
	 * @see #getAllZones(Class)
	 */
	@Deprecated
	public Collection<L2ZoneType> getAllZones()
	{
		List<L2ZoneType> zones = new ArrayList<L2ZoneType>();
		for (Map<Integer, ? extends L2ZoneType> map : _classZones.values())
		{
			zones.addAll(map.values());
		}
		return zones;
	}

Replace Generic With Diamond ArrayList<L2ZoneType> with ArrayList<> in method public getAllZones() : Collection<L2ZoneType> from class com.l2jserver.gameserver.instancemanager.ZoneManager


	/**
	 * Returns all zones from given coordinates (plane)
	 * @param x
	 * @param y
	 * @return zones
	 */
	public List<L2ZoneType> getZones(int x, int y)
	{
		L2WorldRegion region = L2World.getInstance().getRegion(x, y);
		List<L2ZoneType> temp = new ArrayList<>();
		for (L2ZoneType zone : region.getZones())
		{
			if (zone.isInsideZone(x, y))
				temp.add(zone);
		}
		return temp;
	}

	/**
	 * Returns all zones from given coordinates (plane)
	 * @param x
	 * @param y
	 * @return zones
	 */
	public List<L2ZoneType> getZones(int x, int y)
	{
		L2WorldRegion region = L2World.getInstance().getRegion(x, y);
		List<L2ZoneType> temp = new ArrayList<L2ZoneType>();
		for (L2ZoneType zone : region.getZones())
		{
			if (zone.isInsideZone(x, y))
				temp.add(zone);
		}
		return temp;
	}

Replace Generic With Diamond ArrayList<L2ZoneType> with ArrayList<> in method public getZones(x int, y int) : List<L2ZoneType> from class com.l2jserver.gameserver.instancemanager.ZoneManager


	/**
	 * Returns all zones from given coordinates
	 * @param x
	 * @param y
	 * @param z
	 * @return zones
	 */
	public List<L2ZoneType> getZones(int x, int y, int z)
	{
		L2WorldRegion region = L2World.getInstance().getRegion(x, y);
		List<L2ZoneType> temp = new ArrayList<>();
		for (L2ZoneType zone : region.getZones())
		{
			if (zone.isInsideZone(x, y, z))
				temp.add(zone);
		}
		return temp;
	}

	/**
	 * Returns all zones from given coordinates
	 * @param x
	 * @param y
	 * @param z
	 * @return zones
	 */
	public List<L2ZoneType> getZones(int x, int y, int z)
	{
		L2WorldRegion region = L2World.getInstance().getRegion(x, y);
		List<L2ZoneType> temp = new ArrayList<L2ZoneType>();
		for (L2ZoneType zone : region.getZones())
		{
			if (zone.isInsideZone(x, y, z))
				temp.add(zone);
		}
		return temp;
	}

Replace Generic With Diamond ArrayList<L2ZoneType> with ArrayList<> in method public getZones(x int, y int, z int) : List<L2ZoneType> from class com.l2jserver.gameserver.instancemanager.ZoneManager


	/**
	 * General storage for debug items used for visualizing zones.
	 * @return list of items
	 */
	public List<L2ItemInstance> getDebugItems()
	{
		if (_debugItems == null)
			_debugItems = new ArrayList<>();
		return _debugItems;
	}

	/**
	 * General storage for debug items used for visualizing zones.
	 * @return list of items
	 */
	public List<L2ItemInstance> getDebugItems()
	{
		if (_debugItems == null)
			_debugItems = new ArrayList<L2ItemInstance>();
		return _debugItems;
	}

Replace Generic With Diamond ArrayList<L2ItemInstance> with ArrayList<> in method public getDebugItems() : List<L2ItemInstance> from class com.l2jserver.gameserver.instancemanager.ZoneManager


	protected AutoChatHandler()
	{
		_registeredChats = new FastMap<>();
		restoreChatData();
		L2Spawn.addSpawnListener(this);
	}

	protected AutoChatHandler()
	{
		_registeredChats = new FastMap<Integer, AutoChatInstance>();
		restoreChatData();
		L2Spawn.addSpawnListener(this);
	}

Replace Generic With Diamond FastMap<Integer,AutoChatInstance> with FastMap<> in method protected AutoChatHandler() from class com.l2jserver.gameserver.model.AutoChatHandler


	protected L2Manor()
	{
		_seeds = new L2TIntObjectHashMap<>();
		parseData();
	}

	protected L2Manor()
	{
		_seeds = new L2TIntObjectHashMap<SeedData>();
		parseData();
	}

Replace Generic With Diamond L2TIntObjectHashMap<SeedData> with L2TIntObjectHashMap<> in method protected L2Manor() from class com.l2jserver.gameserver.model.L2Manor


	public final void addMap(int x, int y)
	{
		if (_maps == null)
		{
			_maps = new ArrayList<>();
		}

		_maps.add(new int[]
		{
			x,
			y
		});
	}

	public final void addMap(int x, int y)
	{
		if (_maps == null)
		{
			_maps = new ArrayList<int[]>();
		}

		_maps.add(new int[]
		{
			x,
			y
		});
	}

Replace Generic With Diamond ArrayList<int[]> with ArrayList<> in method public addMap(x int, y int) : void from class com.l2jserver.gameserver.model.L2MapRegion


	public final void addSpawn(int x, int y, int z)
	{
		if (_spawnLocs == null)
		{
			_spawnLocs = new ArrayList<>();
		}

		_spawnLocs.add(new Location(x, y, z));
	}

	public final void addSpawn(int x, int y, int z)
	{
		if (_spawnLocs == null)
		{
			_spawnLocs = new ArrayList<Location>();
		}

		_spawnLocs.add(new Location(x, y, z));
	}

Replace Generic With Diamond ArrayList<Location> with ArrayList<> in method public addSpawn(x int, y int, z int) : void from class com.l2jserver.gameserver.model.L2MapRegion


	public final void addOtherSpawn(int x, int y, int z)
	{
		if (_otherSpawnLocs == null)
		{
			_otherSpawnLocs = new ArrayList<>();
		}

		_otherSpawnLocs.add(new Location(x, y, z));
	}

	public final void addOtherSpawn(int x, int y, int z)
	{
		if (_otherSpawnLocs == null)
		{
			_otherSpawnLocs = new ArrayList<Location>();
		}

		_otherSpawnLocs.add(new Location(x, y, z));
	}

Replace Generic With Diamond ArrayList<Location> with ArrayList<> in method public addOtherSpawn(x int, y int, z int) : void from class com.l2jserver.gameserver.model.L2MapRegion


	public final void addChaoticSpawn(int x, int y, int z)
	{
		if (_chaoticSpawnLocs == null)
		{
			_chaoticSpawnLocs = new ArrayList<>();
		}

		_chaoticSpawnLocs.add(new Location(x, y, z));
	}

	public final void addChaoticSpawn(int x, int y, int z)
	{
		if (_chaoticSpawnLocs == null)
		{
			_chaoticSpawnLocs = new ArrayList<Location>();
		}

		_chaoticSpawnLocs.add(new Location(x, y, z));
	}

Replace Generic With Diamond ArrayList<Location> with ArrayList<> in method public addChaoticSpawn(x int, y int, z int) : void from class com.l2jserver.gameserver.model.L2MapRegion


	public final void addBanishSpawn(int x, int y, int z)
	{
		if (_banishSpawnLocs == null)
		{
			_banishSpawnLocs = new ArrayList<>();
		}

		_banishSpawnLocs.add(new Location(x, y, z));
	}

	public final void addBanishSpawn(int x, int y, int z)
	{
		if (_banishSpawnLocs == null)
		{
			_banishSpawnLocs = new ArrayList<Location>();
		}

		_banishSpawnLocs.add(new Location(x, y, z));
	}

Replace Generic With Diamond ArrayList<Location> with ArrayList<> in method public addBanishSpawn(x int, y int, z int) : void from class com.l2jserver.gameserver.model.L2MapRegion


	/**
	 * get random member from party
	 * @param ItemId
	 * @param target
	 * @return
	 */
	private L2PcInstance getCheckedRandomMember(int ItemId, L2Character target)
	{
		List<L2PcInstance> availableMembers = new FastList<>();
		for (L2PcInstance member : getMembers())
		{
			if (member.getInventory().validateCapacityByItemId(ItemId) && Util.checkIfInRange(Config.ALT_PARTY_RANGE2, target, member, true))
			{
				availableMembers.add(member);
			}
		}
		if (!availableMembers.isEmpty())
		{
			return availableMembers.get(Rnd.get(availableMembers.size()));
		}
		return null;
	}

	/**
	 * get random member from party
	 * @param ItemId
	 * @param target
	 * @return
	 */
	private L2PcInstance getCheckedRandomMember(int ItemId, L2Character target)
	{
		List<L2PcInstance> availableMembers = new FastList<L2PcInstance>();
		for (L2PcInstance member : getMembers())
		{
			if (member.getInventory().validateCapacityByItemId(ItemId) && Util.checkIfInRange(Config.ALT_PARTY_RANGE2, target, member, true))
			{
				availableMembers.add(member);
			}
		}
		if (!availableMembers.isEmpty())
		{
			return availableMembers.get(Rnd.get(availableMembers.size()));
		}
		return null;
	}

Replace Generic With Diamond FastList<L2PcInstance> with FastList<> in method private getCheckedRandomMember(ItemId int, target L2Character) : L2PcInstance from class com.l2jserver.gameserver.model.L2Party


	private List<L2Playable> getValidMembers(List<L2Playable> members, int topLvl)
	{
		List<L2Playable> validMembers = new FastList<>();

		// Fixed LevelDiff cutoff point
		if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("level"))
		{
			for (L2Playable member : members)
			{
				if ((topLvl - member.getLevel()) <= Config.PARTY_XP_CUTOFF_LEVEL)
				{
					validMembers.add(member);
				}
			}
		}
		// Fixed MinPercentage cutoff point
		else if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("percentage"))
		{
			int sqLevelSum = 0;
			for (L2Playable member : members)
			{
				sqLevelSum += (member.getLevel() * member.getLevel());
			}

			for (L2Playable member : members)
			{
				int sqLevel = member.getLevel() * member.getLevel();
				if ((sqLevel * 100) >= (sqLevelSum * Config.PARTY_XP_CUTOFF_PERCENT))
				{
					validMembers.add(member);
				}
			}
		}
		// Automatic cutoff method
		else if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("auto"))
		{
			int sqLevelSum = 0;
			for (L2Playable member : members)
			{
				sqLevelSum += (member.getLevel() * member.getLevel());
			}

			int i = members.size() - 1;
			if (i < 1)
			{
				return members;
			}
			if (i >= BONUS_EXP_SP.length)
			{
				i = BONUS_EXP_SP.length - 1;
			}

			for (L2Playable member : members)
			{
				int sqLevel = member.getLevel() * member.getLevel();
				if (sqLevel >= (sqLevelSum / (members.size() * members.size())))
				{
					validMembers.add(member);
				}
			}
		}
		else if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("none"))
		{
			validMembers.addAll(members);
		}
		return validMembers;
	}

	private List<L2Playable> getValidMembers(List<L2Playable> members, int topLvl)
	{
		List<L2Playable> validMembers = new FastList<L2Playable>();

		// Fixed LevelDiff cutoff point
		if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("level"))
		{
			for (L2Playable member : members)
			{
				if ((topLvl - member.getLevel()) <= Config.PARTY_XP_CUTOFF_LEVEL)
				{
					validMembers.add(member);
				}
			}
		}
		// Fixed MinPercentage cutoff point
		else if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("percentage"))
		{
			int sqLevelSum = 0;
			for (L2Playable member : members)
			{
				sqLevelSum += (member.getLevel() * member.getLevel());
			}

			for (L2Playable member : members)
			{
				int sqLevel = member.getLevel() * member.getLevel();
				if ((sqLevel * 100) >= (sqLevelSum * Config.PARTY_XP_CUTOFF_PERCENT))
				{
					validMembers.add(member);
				}
			}
		}
		// Automatic cutoff method
		else if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("auto"))
		{
			int sqLevelSum = 0;
			for (L2Playable member : members)
			{
				sqLevelSum += (member.getLevel() * member.getLevel());
			}

			int i = members.size() - 1;
			if (i < 1)
			{
				return members;
			}
			if (i >= BONUS_EXP_SP.length)
			{
				i = BONUS_EXP_SP.length - 1;
			}

			for (L2Playable member : members)
			{
				int sqLevel = member.getLevel() * member.getLevel();
				if (sqLevel >= (sqLevelSum / (members.size() * members.size())))
				{
					validMembers.add(member);
				}
			}
		}
		else if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("none"))
		{
			validMembers.addAll(members);
		}
		return validMembers;
	}

Replace Generic With Diamond FastList<L2Playable> with FastList<> in method private getValidMembers(members List<L2Playable>, topLvl int) : List<L2Playable> from class com.l2jserver.gameserver.model.L2Party


	public L2TradeList(int listId)
	{
		_items = new FastMap<>();
		_listId = listId;
	}

	public L2TradeList(int listId)
	{
		_items = new FastMap<Integer, L2TradeItem>();
		_listId = listId;
	}

Replace Generic With Diamond FastMap<Integer,L2TradeItem> with FastMap<> in method public L2TradeList(listId int) from class com.l2jserver.gameserver.model.L2TradeList


	protected MobGroupTable()
	{
		_groupMap = new FastMap<>();
	}

	protected MobGroupTable()
	{
		_groupMap = new FastMap<Integer, MobGroup>();
	}

Replace Generic With Diamond FastMap<Integer,MobGroup> with FastMap<> in method protected MobGroupTable() from class com.l2jserver.gameserver.model.MobGroupTable


	protected PartyMatchRoomList()
	{
		_rooms = new FastMap<>();
	}

	protected PartyMatchRoomList()
	{
		_rooms = new FastMap<Integer, PartyMatchRoom>();
	}

Replace Generic With Diamond FastMap<Integer,PartyMatchRoom> with FastMap<> in method protected PartyMatchRoomList() from class com.l2jserver.gameserver.model.PartyMatchRoomList


	protected PartyMatchWaitingList()
	{
		_members = new FastList<>();
	}

	protected PartyMatchWaitingList()
	{
		_members = new FastList<L2PcInstance>();
	}

Replace Generic With Diamond FastList<L2PcInstance> with FastList<> in method protected PartyMatchWaitingList() from class com.l2jserver.gameserver.model.PartyMatchWaitingList


	/**
	 * Distribute Exp and SP rewards to L2PcInstance (including Summon owner) that hit the L2Attackable and to their Party members.
	 *
	 * Actions:
	 * Get the L2PcInstance owner of the L2ServitorInstance (if necessary) and L2Party in progress
	 * Calculate the Experience and SP rewards in function of the level difference
	 * Add Exp and SP rewards to L2PcInstance (including Summon penalty) and to Party members in the known area of the last attacker
	 *
	 * Caution : This method DOESN'T GIVE rewards to L2PetInstance
	 *
	 * @param lastAttacker The L2Character that has killed the L2Attackable
	 */
	@Override
	protected void calculateRewards(L2Character lastAttacker)
	{
		// Creates an empty list of rewards
		FastMap<L2Character, RewardInfo> rewards = new FastMap<L2Character, RewardInfo>().shared();
		try
		{
			if (getAggroList().isEmpty())
				return;

			int damage;
			L2Character attacker, ddealer;

			L2PcInstance maxDealer = null;
			int maxDamage = 0;

			// While Iterating over This Map Removing Object is Not Allowed
			// Go through the _aggroList of the L2Attackable
			for (AggroInfo info : getAggroList().values())
			{
				if (info == null)
					continue;

				// Get the L2Character corresponding to this attacker
				attacker = info.getAttacker();

				// Get damages done by this attacker
				damage = info.getDamage();

				// Prevent unwanted behavior
				if (damage > 1)
				{
					if ((attacker instanceof L2ServitorInstance) || ((attacker instanceof L2PetInstance) && ((L2PetInstance) attacker).getPetLevelData().getOwnerExpTaken() > 0))
						ddealer = ((L2Summon) attacker).getOwner();
					else
						ddealer = info.getAttacker();

					// Check if ddealer isn't too far from this (killed monster)
					if (!Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, ddealer, true))
						continue;

					// Calculate real damages (Summoners should get own damage plus summon's damage)
					RewardInfo reward = rewards.get(ddealer);

					if (reward == null)
						reward = new RewardInfo(ddealer, damage);
					else
						reward.addDamage(damage);

					rewards.put(ddealer, reward);

					if (ddealer.getActingPlayer() != null && reward._dmg > maxDamage)
					{
						maxDealer = ddealer.getActingPlayer();
						maxDamage = reward._dmg;
					}
				}
			}

			// Manage Base, Quests and Sweep drops of the L2Attackable
			doItemDrop(maxDealer != null && maxDealer.isOnline() ? maxDealer : lastAttacker);

			// Manage drop of Special Events created by GM for a defined period
			doEventDrop(lastAttacker);

			if (!getMustRewardExpSP())
				return;

			if (!rewards.isEmpty())
			{
				L2Party attackerParty;
				long exp;
				int levelDiff, partyDmg, partyLvl, sp;
				float partyMul, penalty;
				RewardInfo reward2;
				int[] tmp;
				for (RewardInfo reward : rewards.values())
				{
					if (reward == null)
						continue;

					// Penalty applied to the attacker's XP
					penalty = 0;

					// Attacker to be rewarded
					attacker = reward._attacker;

					// Total amount of damage done
					damage = reward._dmg;

					// If the attacker is a Pet, get the party of the owner
					if (attacker instanceof L2PetInstance)
						attackerParty = ((L2PetInstance) attacker).getParty();
					else if (attacker instanceof L2PcInstance)
						attackerParty = ((L2PcInstance) attacker).getParty();
					else
						return;

					// If this attacker is a L2PcInstance with a summoned L2ServitorInstance, get Exp Penalty applied for the current summoned L2SummonInstance
					if (attacker instanceof L2PcInstance && ((L2PcInstance) attacker).getPet() instanceof L2ServitorInstance)
						penalty = ((L2ServitorInstance) ((L2PcInstance) attacker).getPet()).getExpPenalty();

					// We must avoid "over damage", if any
					if (damage > getMaxHp())
						damage = getMaxHp();

					// If there's NO party in progress
					if (attackerParty == null)
					{
						// Calculate Exp and SP rewards
						if (attacker.getKnownList().knowsObject(this))
						{
							// Calculate the difference of level between this attacker (L2PcInstance or L2ServitorInstance owner) and the L2Attackable
							// mob = 24, atk = 10, diff = -14 (full xp)
							// mob = 24, atk = 28, diff = 4 (some xp)
							// mob = 24, atk = 50, diff = 26 (no xp)
							levelDiff = attacker.getLevel() - getLevel();

							tmp = calculateExpAndSp(levelDiff, damage);
							exp = tmp[0];
							exp *= 1 - penalty;
							sp = tmp[1];

							if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
							{
								exp *= Config.L2JMOD_CHAMPION_REWARDS;
								sp *= Config.L2JMOD_CHAMPION_REWARDS;
							}

							// Check for an over-hit enabled strike
							if (attacker instanceof L2PcInstance)
							{
								L2PcInstance player = (L2PcInstance) attacker;
								if (isOverhit() && attacker == getOverhitAttacker())
								{
									player.sendPacket(SystemMessageId.OVER_HIT);
									exp += calculateOverhitExp(exp);
								}
							}

							// Distribute the Exp and SP between the L2PcInstance and its L2Summon
							if (!attacker.isDead())
							{
								long addexp = Math.round(attacker.calcStat(Stats.EXPSP_RATE, exp, null, null));
								int addsp = (int) attacker.calcStat(Stats.EXPSP_RATE, sp, null, null);

								if (attacker instanceof L2PcInstance)
								{
									if (((L2PcInstance) attacker).getSkillLevel(467) > 0)
									{
										L2Skill skill = SkillTable.getInstance().getInfo(467, ((L2PcInstance) attacker).getSkillLevel(467));

										if (skill.getExpNeeded() <= addexp)
											((L2PcInstance) attacker).absorbSoul(skill, this);
									}
									((L2PcInstance) attacker).addExpAndSp(addexp, addsp, useVitalityRate());
									if (addexp > 0)
										((L2PcInstance) attacker).updateVitalityPoints(getVitalityPoints(damage), true, false);
								}
								else
									attacker.addExpAndSp(addexp, addsp);
							}
						}
					}
					else
					{
						//share with party members
						partyDmg = 0;
						partyMul = 1.f;
						partyLvl = 0;

						// Get all L2Character that can be rewarded in the party
						List<L2Playable> rewardedMembers = new FastList<>();
						// Go through all L2PcInstance in the party
						List<L2PcInstance> groupMembers;

						if (attackerParty.isInCommandChannel())
							groupMembers = attackerParty.getCommandChannel().getMembers();
						else
							groupMembers = attackerParty.getMembers();

						for (L2PcInstance pl : groupMembers)
						{
							if (pl == null || pl.isDead())
								continue;

							// Get the RewardInfo of this L2PcInstance from L2Attackable rewards
							reward2 = rewards.get(pl);

							// If the L2PcInstance is in the L2Attackable rewards add its damages to party damages
							if (reward2 != null)
							{
								if (Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, pl, true))
								{
									partyDmg += reward2._dmg; // Add L2PcInstance damages to party damages
									rewardedMembers.add(pl);

									if (pl.getLevel() > partyLvl)
									{
										if (attackerParty.isInCommandChannel())
											partyLvl = attackerParty.getCommandChannel().getLevel();
										else
											partyLvl = pl.getLevel();
									}
								}
								rewards.remove(pl); // Remove the L2PcInstance from the L2Attackable rewards
							}
							else
							{
								// Add L2PcInstance of the party (that have attacked or not) to members that can be rewarded
								// and in range of the monster.
								if (Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, pl, true))
								{
									rewardedMembers.add(pl);
									if (pl.getLevel() > partyLvl)
									{
										if (attackerParty.isInCommandChannel())
											partyLvl = attackerParty.getCommandChannel().getLevel();
										else
											partyLvl = pl.getLevel();
									}
								}
							}
							L2Playable summon = pl.getPet();

							if (summon != null && summon.isPet())
							{
								reward2 = rewards.get(summon);

								if (reward2 != null) // Pets are only added if they have done damage
								{
									if (Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, summon, true))
									{
										partyDmg += reward2._dmg; // Add summon damages to party damages
										rewardedMembers.add(summon);

										if (summon.getLevel() > partyLvl)
											partyLvl = summon.getLevel();
									}
									rewards.remove(summon); // Remove the summon from the L2Attackable rewards
								}
							}
						}

						// If the party didn't killed this L2Attackable alone
						if (partyDmg < getMaxHp())
							partyMul = ((float) partyDmg / (float) getMaxHp());

						// Avoid "over damage"
						if (partyDmg > getMaxHp())
							partyDmg = getMaxHp();

						// Calculate the level difference between Party and L2Attackable
						levelDiff = partyLvl - getLevel();

						// Calculate Exp and SP rewards
						tmp = calculateExpAndSp(levelDiff, partyDmg);
						exp = tmp[0];
						sp = tmp[1];

						if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
						{
							exp *= Config.L2JMOD_CHAMPION_REWARDS;
							sp *= Config.L2JMOD_CHAMPION_REWARDS;
						}

						exp *= partyMul;
						sp *= partyMul;

						// Check for an over-hit enabled strike
						// (When in party, the over-hit exp bonus is given to the whole party and splitted proportionally through the party members)
						if (attacker instanceof L2PcInstance)
						{
							L2PcInstance player = (L2PcInstance) attacker;

							if (isOverhit() && attacker == getOverhitAttacker())
							{
								player.sendPacket(SystemMessageId.OVER_HIT);
								exp += calculateOverhitExp(exp);
							}
						}
						// Distribute Experience and SP rewards to L2PcInstance Party members in the known area of the last attacker
						if (partyDmg > 0)
							attackerParty.distributeXpAndSp(exp, sp, rewardedMembers, partyLvl, partyDmg, this);
					}
				}
			}
			rewards = null;
		}
		catch (Exception e)
		{
			_log.log(Level.SEVERE, "", e);
		}
	}

	/**
	 * Distribute Exp and SP rewards to L2PcInstance (including Summon owner) that hit the L2Attackable and to their Party members.
	 *
	 * Actions:
	 * Get the L2PcInstance owner of the L2ServitorInstance (if necessary) and L2Party in progress
	 * Calculate the Experience and SP rewards in function of the level difference
	 * Add Exp and SP rewards to L2PcInstance (including Summon penalty) and to Party members in the known area of the last attacker
	 *
	 * Caution : This method DOESN'T GIVE rewards to L2PetInstance
	 *
	 * @param lastAttacker The L2Character that has killed the L2Attackable
	 */
	@Override
	protected void calculateRewards(L2Character lastAttacker)
	{
		// Creates an empty list of rewards
		FastMap<L2Character, RewardInfo> rewards = new FastMap<L2Character, RewardInfo>().shared();
		try
		{
			if (getAggroList().isEmpty())
				return;

			int damage;
			L2Character attacker, ddealer;

			L2PcInstance maxDealer = null;
			int maxDamage = 0;

			// While Iterating over This Map Removing Object is Not Allowed
			// Go through the _aggroList of the L2Attackable
			for (AggroInfo info : getAggroList().values())
			{
				if (info == null)
					continue;

				// Get the L2Character corresponding to this attacker
				attacker = info.getAttacker();

				// Get damages done by this attacker
				damage = info.getDamage();

				// Prevent unwanted behavior
				if (damage > 1)
				{
					if ((attacker instanceof L2ServitorInstance) || ((attacker instanceof L2PetInstance) && ((L2PetInstance) attacker).getPetLevelData().getOwnerExpTaken() > 0))
						ddealer = ((L2Summon) attacker).getOwner();
					else
						ddealer = info.getAttacker();

					// Check if ddealer isn't too far from this (killed monster)
					if (!Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, ddealer, true))
						continue;

					// Calculate real damages (Summoners should get own damage plus summon's damage)
					RewardInfo reward = rewards.get(ddealer);

					if (reward == null)
						reward = new RewardInfo(ddealer, damage);
					else
						reward.addDamage(damage);

					rewards.put(ddealer, reward);

					if (ddealer.getActingPlayer() != null && reward._dmg > maxDamage)
					{
						maxDealer = ddealer.getActingPlayer();
						maxDamage = reward._dmg;
					}
				}
			}

			// Manage Base, Quests and Sweep drops of the L2Attackable
			doItemDrop(maxDealer != null && maxDealer.isOnline() ? maxDealer : lastAttacker);

			// Manage drop of Special Events created by GM for a defined period
			doEventDrop(lastAttacker);

			if (!getMustRewardExpSP())
				return;

			if (!rewards.isEmpty())
			{
				L2Party attackerParty;
				long exp;
				int levelDiff, partyDmg, partyLvl, sp;
				float partyMul, penalty;
				RewardInfo reward2;
				int[] tmp;
				for (RewardInfo reward : rewards.values())
				{
					if (reward == null)
						continue;

					// Penalty applied to the attacker's XP
					penalty = 0;

					// Attacker to be rewarded
					attacker = reward._attacker;

					// Total amount of damage done
					damage = reward._dmg;

					// If the attacker is a Pet, get the party of the owner
					if (attacker instanceof L2PetInstance)
						attackerParty = ((L2PetInstance) attacker).getParty();
					else if (attacker instanceof L2PcInstance)
						attackerParty = ((L2PcInstance) attacker).getParty();
					else
						return;

					// If this attacker is a L2PcInstance with a summoned L2ServitorInstance, get Exp Penalty applied for the current summoned L2SummonInstance
					if (attacker instanceof L2PcInstance && ((L2PcInstance) attacker).getPet() instanceof L2ServitorInstance)
						penalty = ((L2ServitorInstance) ((L2PcInstance) attacker).getPet()).getExpPenalty();

					// We must avoid "over damage", if any
					if (damage > getMaxHp())
						damage = getMaxHp();

					// If there's NO party in progress
					if (attackerParty == null)
					{
						// Calculate Exp and SP rewards
						if (attacker.getKnownList().knowsObject(this))
						{
							// Calculate the difference of level between this attacker (L2PcInstance or L2ServitorInstance owner) and the L2Attackable
							// mob = 24, atk = 10, diff = -14 (full xp)
							// mob = 24, atk = 28, diff = 4 (some xp)
							// mob = 24, atk = 50, diff = 26 (no xp)
							levelDiff = attacker.getLevel() - getLevel();

							tmp = calculateExpAndSp(levelDiff, damage);
							exp = tmp[0];
							exp *= 1 - penalty;
							sp = tmp[1];

							if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
							{
								exp *= Config.L2JMOD_CHAMPION_REWARDS;
								sp *= Config.L2JMOD_CHAMPION_REWARDS;
							}

							// Check for an over-hit enabled strike
							if (attacker instanceof L2PcInstance)
							{
								L2PcInstance player = (L2PcInstance) attacker;
								if (isOverhit() && attacker == getOverhitAttacker())
								{
									player.sendPacket(SystemMessageId.OVER_HIT);
									exp += calculateOverhitExp(exp);
								}
							}

							// Distribute the Exp and SP between the L2PcInstance and its L2Summon
							if (!attacker.isDead())
							{
								long addexp = Math.round(attacker.calcStat(Stats.EXPSP_RATE, exp, null, null));
								int addsp = (int) attacker.calcStat(Stats.EXPSP_RATE, sp, null, null);

								if (attacker instanceof L2PcInstance)
								{
									if (((L2PcInstance) attacker).getSkillLevel(467) > 0)
									{
										L2Skill skill = SkillTable.getInstance().getInfo(467, ((L2PcInstance) attacker).getSkillLevel(467));

										if (skill.getExpNeeded() <= addexp)
											((L2PcInstance) attacker).absorbSoul(skill, this);
									}
									((L2PcInstance) attacker).addExpAndSp(addexp, addsp, useVitalityRate());
									if (addexp > 0)
										((L2PcInstance) attacker).updateVitalityPoints(getVitalityPoints(damage), true, false);
								}
								else
									attacker.addExpAndSp(addexp, addsp);
							}
						}
					}
					else
					{
						//share with party members
						partyDmg = 0;
						partyMul = 1.f;
						partyLvl = 0;

						// Get all L2Character that can be rewarded in the party
						List<L2Playable> rewardedMembers = new FastList<L2Playable>();
						// Go through all L2PcInstance in the party
						List<L2PcInstance> groupMembers;

						if (attackerParty.isInCommandChannel())
							groupMembers = attackerParty.getCommandChannel().getMembers();
						else
							groupMembers = attackerParty.getMembers();

						for (L2PcInstance pl : groupMembers)
						{
							if (pl == null || pl.isDead())
								continue;

							// Get the RewardInfo of this L2PcInstance from L2Attackable rewards
							reward2 = rewards.get(pl);

							// If the L2PcInstance is in the L2Attackable rewards add its damages to party damages
							if (reward2 != null)
							{
								if (Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, pl, true))
								{
									partyDmg += reward2._dmg; // Add L2PcInstance damages to party damages
									rewardedMembers.add(pl);

									if (pl.getLevel() > partyLvl)
									{
										if (attackerParty.isInCommandChannel())
											partyLvl = attackerParty.getCommandChannel().getLevel();
										else
											partyLvl = pl.getLevel();
									}
								}
								rewards.remove(pl); // Remove the L2PcInstance from the L2Attackable rewards
							}
							else
							{
								// Add L2PcInstance of the party (that have attacked or not) to members that can be rewarded
								// and in range of the monster.
								if (Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, pl, true))
								{
									rewardedMembers.add(pl);
									if (pl.getLevel() > partyLvl)
									{
										if (attackerParty.isInCommandChannel())
											partyLvl = attackerParty.getCommandChannel().getLevel();
										else
											partyLvl = pl.getLevel();
									}
								}
							}
							L2Playable summon = pl.getPet();

							if (summon != null && summon.isPet())
							{
								reward2 = rewards.get(summon);

								if (reward2 != null) // Pets are only added if they have done damage
								{
									if (Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, summon, true))
									{
										partyDmg += reward2._dmg; // Add summon damages to party damages
										rewardedMembers.add(summon);

										if (summon.getLevel() > partyLvl)
											partyLvl = summon.getLevel();
									}
									rewards.remove(summon); // Remove the summon from the L2Attackable rewards
								}
							}
						}

						// If the party didn't killed this L2Attackable alone
						if (partyDmg < getMaxHp())
							partyMul = ((float) partyDmg / (float) getMaxHp());

						// Avoid "over damage"
						if (partyDmg > getMaxHp())
							partyDmg = getMaxHp();

						// Calculate the level difference between Party and L2Attackable
						levelDiff = partyLvl - getLevel();

						// Calculate Exp and SP rewards
						tmp = calculateExpAndSp(levelDiff, partyDmg);
						exp = tmp[0];
						sp = tmp[1];

						if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
						{
							exp *= Config.L2JMOD_CHAMPION_REWARDS;
							sp *= Config.L2JMOD_CHAMPION_REWARDS;
						}

						exp *= partyMul;
						sp *= partyMul;

						// Check for an over-hit enabled strike
						// (When in party, the over-hit exp bonus is given to the whole party and splitted proportionally through the party members)
						if (attacker instanceof L2PcInstance)
						{
							L2PcInstance player = (L2PcInstance) attacker;

							if (isOverhit() && attacker == getOverhitAttacker())
							{
								player.sendPacket(SystemMessageId.OVER_HIT);
								exp += calculateOverhitExp(exp);
							}
						}
						// Distribute Experience and SP rewards to L2PcInstance Party members in the known area of the last attacker
						if (partyDmg > 0)
							attackerParty.distributeXpAndSp(exp, sp, rewardedMembers, partyLvl, partyDmg, this);
					}
				}
			}
			rewards = null;
		}
		catch (Exception e)
		{
			_log.log(Level.SEVERE, "", e);
		}
	}

Replace Generic With Diamond FastList<L2Playable> with FastList<> in method protected calculateRewards(lastAttacker L2Character) : void from class com.l2jserver.gameserver.model.actor.L2Attackable


	private void setSeeded(int id, int seederLvl)
	{
		_seeded = true;
		_seedType = id;
		int count = 1;

		Set<Integer> skillIds = getTemplate().getSkills().keySet();

		if (skillIds != null)
		{
			for (int skillId : skillIds)
			{
				switch (skillId)
				{
					case 4303: //Strong type x2
						count *= 2;
						break;
					case 4304: //Strong type x3
						count *= 3;
						break;
					case 4305: //Strong type x4
						count *= 4;
						break;
					case 4306: //Strong type x5
						count *= 5;
						break;
					case 4307: //Strong type x6
						count *= 6;
						break;
					case 4308: //Strong type x7
						count *= 7;
						break;
					case 4309: //Strong type x8
						count *= 8;
						break;
					case 4310: //Strong type x9
						count *= 9;
						break;
				}
			}
		}

		int diff = (getLevel() - (L2Manor.getInstance().getSeedLevel(_seedType) - 5));

		// hi-lvl mobs bonus
		if (diff > 0)
			count += diff;

		FastList<RewardItem> harvested = new FastList<>();

		harvested.add(new RewardItem(L2Manor.getInstance().getCropType(_seedType), count * Config.RATE_DROP_MANOR));

		_harvestItems = harvested.toArray(new RewardItem[harvested.size()]);
	}

	private void setSeeded(int id, int seederLvl)
	{
		_seeded = true;
		_seedType = id;
		int count = 1;

		Set<Integer> skillIds = getTemplate().getSkills().keySet();

		if (skillIds != null)
		{
			for (int skillId : skillIds)
			{
				switch (skillId)
				{
					case 4303: //Strong type x2
						count *= 2;
						break;
					case 4304: //Strong type x3
						count *= 3;
						break;
					case 4305: //Strong type x4
						count *= 4;
						break;
					case 4306: //Strong type x5
						count *= 5;
						break;
					case 4307: //Strong type x6
						count *= 6;
						break;
					case 4308: //Strong type x7
						count *= 7;
						break;
					case 4309: //Strong type x8
						count *= 8;
						break;
					case 4310: //Strong type x9
						count *= 9;
						break;
				}
			}
		}

		int diff = (getLevel() - (L2Manor.getInstance().getSeedLevel(_seedType) - 5));

		// hi-lvl mobs bonus
		if (diff > 0)
			count += diff;

		FastList<RewardItem> harvested = new FastList<RewardItem>();

		harvested.add(new RewardItem(L2Manor.getInstance().getCropType(_seedType), count * Config.RATE_DROP_MANOR));

		_harvestItems = harvested.toArray(new RewardItem[harvested.size()]);
	}

Replace Generic With Diamond FastList<RewardItem> with FastList<> in method private setSeeded(id int, seederLvl int) : void from class com.l2jserver.gameserver.model.actor.L2Attackable