@Override
	public void execute() {
    seq(new EflSelectPcMonOperationSegment(PC_MON_RELEASE));

    seqSample(() -> {
      int numMons = curGb.readMemory(0xDA80);
      for (int i = 0; i < numMons; i++) {
        int curMon = curGb.readMemory(0xDA80 + i + 1);
        if (curMon == mon) {
          monGoalPosition = i;
          break;
        }
      }
      if (monGoalPosition == -1)
        throw new IllegalStateException("Mon " + mon + " not found.");
    });


    if (monGoalPosition <= 2)
      seqEflScrollFastAF(monGoalPosition);
    else
      seqEflScrollFastA(monGoalPosition);
		seqEflButton(Move.A, PressMetric.PRESSED); // release
    seq(new EflSkipTextsSegment(1)); // release
    seq(new EflSkipTextsSegment(1, true)); // release
    seq(new EflSkipTextsSegment(2)); // release
	}