code: func (b LocationBounds) Expand(loc Location) LocationBounds {
  	if b == (LocationBounds{}) {
  		return LocationBounds{
  			North: loc.Latitude,
  			South: loc.Latitude,
  			West:  loc.Longitude,
  			East:  loc.Longitude,
  		}
  	}
  	nb := LocationBounds{
  		North: b.North,
  		South: b.South,
  		West:  b.West,
  		East:  b.East,
  	}
  	if loc.Latitude > nb.North {
  		nb.North = loc.Latitude
  	} else if loc.Latitude < nb.South {
  		nb.South = loc.Latitude
  	}
  	if nb.Contains(loc) {
  		return nb
  	}
  	center := nb.center()
  	dToCenter := center.Longitude - loc.Longitude
  	if math.Abs(dToCenter) <= 180 {
  		if dToCenter > 0 {
  			// expand Westwards
  			nb.West = loc.Longitude
  		} else {
  			// expand Eastwards
  			nb.East = loc.Longitude
  		}
  		return nb
  	}
  	if dToCenter > 0 {
  		// expand Eastwards
  		nb.East = loc.Longitude
  	} else {
  		// expand Westwards
  		nb.West = loc.Longitude
  	}
  	return nb
  }
docs: // Expand returns a new LocationBounds nb. If either of loc coordinates is
  // outside of b, nb is the dimensions of b expanded as little as possible in
  // order to include loc. Otherwise, nb is just a copy of b.