30   if (y != move.
to().
y())
 
   32   const int x = move.
to().
x();
 
   33   return (x == king.
x() || abs(king.
x() - x) == 2);
 
   38   const Player defender = 
alt(state.turn());
 
   39   const CArray<Square,2> knight_position = {{
 
   45   for (
int i=0; i<2; ++i) {
 
   46     const Square kp = knight_position[i];
 
   47     const Piece p = state.pieceAt(kp);
 
   48     if (state.hasEffectNotBy(defender, captured, kp))
 
   52             || state.hasPieceOnStand<
KNIGHT>(state.turn())))
 
   55         && state.hasEffectByPtypeStrict<
KNIGHT>(state.turn(), kp))
 
   63   const Player defender = 
alt(state.turn());
 
   64   const Square king = state.kingSquare(defender);
 
   65   if (Neighboring8Direct::hasEffectOrAdditional(state, move.
ptypeO(), move.
to(), king)
 
   67       || state.longEffectAt(move.
to(), 
alt(state.turn())).any() 
 
   68       || (! move.
isDrop() && state.longEffectAt(move.
from(), state.turn()).any()) 
 
   72       && Neighboring8Direct::hasEffectOrAdditional(state, move.
capturePtypeO(), move.
to(), king))
 
   75   const King8Info info(state.king8Info(defender));
 
   77       && (info.dropCandidate()
 
   81       && (info.dropCandidate() || info.moveCandidate2() 
 
   82           || info.liberty() == 0))
 
   84   if (info.liberty() == 0
 
   87               && ((state.hasPieceOnStand<
KNIGHT>(state.turn())
 
   89                   || state.hasEffectByPtypeStrict<
KNIGHT>(state.turn(), move.
from())))))
 
   97   NumEffectState& state = 
const_cast<NumEffectState&
>(cstate);
 
   98   if (! isCandidate(cstate, move))
 
  102   state.makeUnmakeMove(move, helper);
 
  104   if (result && ! isCandidate(cstate, move))
 
  105     std::cerr << cstate << move << 
"\n", assert(0);