public ArrayList<Integer> generateWhitePawnDestinations( 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 ) || whiteCanEnPassantLeft( position ) ) {
      destinations.add( position + 15 );
    }
    if ( !squareEmpty( position + 17 ) || whiteCanEnPassantRight( position ) ) {
      destinations.add( position + 17 );
    }

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

    return ( destinations );
  }