+ mlist = generate_moves<KNIGHT, Type == QUIET_CHECKS>(pos, mlist, us, target, ci);
+ mlist = generate_moves<BISHOP, Type == QUIET_CHECKS>(pos, mlist, us, target, ci);
+ mlist = generate_moves<ROOK, Type == QUIET_CHECKS>(pos, mlist, us, target, ci);
+ mlist = generate_moves<QUEEN, Type == QUIET_CHECKS>(pos, mlist, us, target, ci);
+
+ if (Type != QUIET_CHECKS && Type != EVASIONS)
+ mlist = generate_king_moves(pos, mlist, us, target);
+
+ if (Type != CAPTURES && Type != EVASIONS && pos.can_castle(us))
+ {
+ mlist = generate_castle<KING_SIDE, Type == QUIET_CHECKS>(pos, mlist, us);
+ mlist = generate_castle<QUEEN_SIDE, Type == QUIET_CHECKS>(pos, mlist, us);
+ }