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

    if ( canCastleKingSide( position ) ) {
      destinations.add( position + 2 );
    }
    if ( canCastleQueenSide( position ) ) {
      destinations.add( position - 2 );
    }

    for ( int i : new int[]{ 15, 16, 17, 1, -1, -17, -16, -15 } ) {
      if ( !nextToOpponentKing( position + i ) ) {
        destinations.add( position + i );
      }
    }

    return ( destinations );
  }