/// <summary> /// Returns whether the given move is a dangerous pawn advance. A dangerous /// pawn advance is a pawn move that results in the pawn being in a position /// in which no enemy pawns can threaten or block it. /// </summary> /// <param name="move">The move to consider.</param> /// <param name="passedPawnPreventionBitboard">A bitboard giving the long term attack possibilities of the enemy pawns.</param> /// <returns>Whether the given move is a dangerous pawn advance.</returns> private Boolean IsDangerousPawnAdvance(Int32 move, UInt64 passedPawnPreventionBitboard) { return(Move.IsPawnAdvance(move) && ((1UL << Move.To(move)) & passedPawnPreventionBitboard) == 0); }