docs: protected double[] getStartEndPointsNS(double north, double south, int zoom) {
          //brute force when zoom is less than 10
          if (zoom < 10) {
              double sn_start_point = Math.floor(south);
              double incrementor = getIncrementor(zoom);
  
  
              double x = -90;
              while (x < sn_start_point)
                  x = x + incrementor;
              sn_start_point = x;
  
              double sn_stop_point = Math.ceil(north);
              x = 90;
              while (x > sn_stop_point)
                  x = x - incrementor;
              sn_stop_point = x;
  
              if (sn_stop_point > 90) {
                  sn_stop_point = 90;
              }
              if (sn_start_point < -90) {
                  sn_start_point = -90;
              }
              return new double[]{sn_start_point, sn_stop_point};
          } else {
              //hmm start at origin, add inc until we go too far, then back off, go to the next zoom level
              double sn_start_point = -90;
              if (south > 0) {
                  sn_start_point = 0;
              }
              double sn_stop_point = 90;
              if (north < 0) {
                  sn_stop_point = 0;
              }
  
              for (int xx = 2; xx <= zoom; xx++) {
                  double inc = getIncrementor(xx);
                  while (sn_start_point < south - inc) {
                      sn_start_point += inc;
                  }
  
                  while (sn_stop_point > north + inc) {
                      sn_stop_point -= inc;
                  }
              }
  
              return new double[]{sn_start_point, sn_stop_point};
          }
      }