code: func (b *Bound) UnmarshalJSON(data []byte) error {
  	var points []*Point
  
  	err := json.Unmarshal(data, &points)
  	if err != nil {
  		return err
  	}
  
  	if len(points) > 2 {
  		return errors.New("geo: too many points to unmarshal into bound")
  	}
  
  	if len(points) < 2 {
  		return errors.New("geo: not enough points to unmarshal into bound")
  	}
  
  	b.sw = points[0]
  	b.ne = points[0].Clone()
  	b.Extend(points[1])
  
  	return nil
  }
docs: // UnmarshalJSON enables bounds to be decoded as JSON using the encoding/json package.