public static Tile getUnexplored(
    IntelMap intelMap, Target target
  ) {
    //
    //  TODO:  Restrict this to within a given Box2D area if possible.
    
    
    final Vec3D pos = target.position(null) ;
    final MipMap map = intelMap.fogMap() ;
    int high = map.high() + 1, x = 0, y = 0, kX, kY ;
    final Coord kids[] = new Coord[] {
      new Coord(0, 0), new Coord(0, 1),
      new Coord(1, 0), new Coord(1, 1)
    } ;
    float mX, mY, rating = 0 ;
    //
    //  Work your way down from the topmost sections, picking the most
    //  appealing child at each point.
    while (high-- > 1) {
      final float s = 1 << high ;
      Coord picked = null ;
      float bestRating = 0 ;
      for (int i = 4 ; i-- > 0 ;) {
        //
        //  We calculate the coordinates for each child-section, both within
        //  the mip-map, and in terms of world-coordinates midpoint, and skip
        //  over anything outside the supplied bounds.
        final Coord c = kids[i] ;
        kX = (x * 2) + c.x ;
        kY = (y * 2) + c.y ;
        mX = (kX + 0.5f) * s ;
        mY = (kY + 0.5f) * s ;
        //
        //  Otherwise, favour closer areas that are partially unexplored.
        final float level = map.getAvgAt(kX, kY, high - 1) < 1 ? 1 : 0 ;
        final float distance = pos.distance(mX, mY, 0) ;
        rating = level * Rand.avgNums(2) ;
        rating /= 1 + (distance / World.SECTOR_SIZE) ;
        if (rating > bestRating) { picked = c ; bestRating = rating ; }
      }
      if (picked == null) return null ;
      x = (x * 2) + picked.x ;
      y = (y * 2) + picked.y ;
    }
    
    final Tile looks = intelMap.world().tileAt(x, y) ;
    if (intelMap.fogAt(looks) == 1) return null ;
    if (looks.blocked()) return Spacing.nearestOpenTile(looks, target) ;
    else return looks ;
  }