public ArrayList<Integer> generateBlackPawnDestinations( int position ) {
    ArrayList<Integer> destinations = new ArrayList<Integer>();

    if ( !hasPieceMoved( pieceAt( position ) ) && squareEmpty( position - 16 ) && squareEmpty( position - 32 ) ) {
      destinations.add( position - 32 );
    }
    if ( !squareEmpty( position - 15 ) || blackCanEnPassantLeft( position ) ) {
      destinations.add( position - 15 );
    }
    if ( !squareEmpty( position - 17 ) || blackCanEnPassantRight( position ) ) {
      destinations.add( position - 17 );
    }

    if ( squareEmpty( position - 16 ) ) {
      destinations.add( position - 16 );
    }

    return ( destinations );
  }