protected boolean isValidDrop(GameState state, int x, int y) {
        boolean nifu = true;
        for (int i = 0; nifu && i < 9; i++) {
            nifu = !(state.getPieceAt(x, i) instanceof Pawn
                  && state.getPieceAt(x, i).getAllegiance() == this.getAllegiance()); 
        }
        Piece tempRep = state.getPieceAt(x, y);
        state.mockDropPieceFromTable(this.allegiance, x, y, this);
        boolean uchifuzume = !state.isKingCheckmated(-this.allegiance);
        state.mockAddPieceToDropTable(this.allegiance, this);
        state.setPieceAt(x, y, tempRep);
        int space = -1;
        for (int i = 0; i < state.getCorrectDropTable(this.getAllegiance()).size(); i++) {
            if (state.getCorrectDropTable(this.getAllegiance()).get(i) == this) {
                space = i;
            }
        }
        return nifu
            && uchifuzume
            && state.getPieceAt(x, y) instanceof EmptyPiece
            && y != 4+4*this.allegiance
           && !state.willKingBeInCheckAfterDrop(x, y, this.getAllegiance(), space);
    }