@Override
	public void removeEvosForPokemonPool() {
		List<Pokemon> pokemonIncluded = this.mainPokemonList;
		int pointersOffset = romEntry.getValue("PokemonMovesetsTableOffset");
		for (int i = 1; i <= 251; i++) {
			int pointer = readWord(pointersOffset + (i - 1) * 2);
			int msPointer = calculateOffset(bankOf(pointersOffset), pointer);
			int realPointer = msPointer;
			Pokemon pkmn = pokes[i];
			boolean includedPkmn = pokemonIncluded.contains(pkmn);
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			// Process evolution data
			while (rom[realPointer] != 0) {
				int method = rom[realPointer];
				Pokemon otherPoke = pokes[rom[realPointer + 2
						+ (method == 5 ? 1 : 0)] & 0xFF];
				if (includedPkmn && pokemonIncluded.contains(otherPoke)) {
					// keep this evolution
					baos.write(rom, realPointer, (method == 5) ? 4 : 3);
				}
				if (method == 5) {
					realPointer += 4;
				} else {
					realPointer += 3;
				}
			}
			int moveCount = 0;
			// write an end to the new data as well
			baos.write(0);
			realPointer++;
			int startOfMoves = realPointer;
			while (rom[realPointer] != 0) {
				moveCount++;
				realPointer += 2;
			}
			baos.write(rom, startOfMoves, moveCount * 2);
			baos.write(0);
			// now we have the adjusted data, write it back
			byte[] adjusted = baos.toByteArray();
			System.arraycopy(adjusted, 0, rom, msPointer, adjusted.length);
		}
	}