code: @Nonnull
      MapcodeZone restrictZoneTo(@Nonnull final Boundary area) {
          final MapcodeZone mapcodeZone = new MapcodeZone(latFractionMin, latFractionMax, lonFractionMin, lonFractionMax);
          final double latMin = area.getLatMicroDegMin() * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR;
          if (mapcodeZone.latFractionMin < latMin) {
              mapcodeZone.latFractionMin = latMin;
          }
          final double latMax = area.getLatMicroDegMax() * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR;
          if (mapcodeZone.latFractionMax > latMax) {
              mapcodeZone.latFractionMax = latMax;
          }
          if (mapcodeZone.latFractionMin < mapcodeZone.latFractionMax) {
              double lonMin = area.getLonMicroDegMin() * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR;
              double lonMax = area.getLonMicroDegMax() * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR;
              if ((lonMax < 0) && (mapcodeZone.lonFractionMin > 0)) {
                  lonMin += (Point.MICRO_DEG_360 * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR);
                  lonMax += (Point.MICRO_DEG_360 * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR);
              } else if ((lonMin > 1) && (mapcodeZone.lonFractionMax < 0)) {
                  lonMin -= (Point.MICRO_DEG_360 * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR);
                  lonMax -= (Point.MICRO_DEG_360 * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR);
              }
              if (mapcodeZone.lonFractionMin < lonMin) {
                  mapcodeZone.lonFractionMin = lonMin;
              }
              if (mapcodeZone.lonFractionMax > lonMax) {
                  mapcodeZone.lonFractionMax = lonMax;
              }
          }
          return mapcodeZone;
      }
docs: Returns null if no such intersection exists.