code: static Iterator<MutableIntTuple> mooreNeighborhoodIterator(
          IntTuple center, int radius, 
          IntTuple min, IntTuple max,
          Order order)
      {
          if (min != null)
          {
              Utils.checkForEqualSize(center, max);
          }
          if (max != null)
          {
              Utils.checkForEqualSize(center, max);
          }
          MutableIntTuple resultMin = IntTuples.subtract(center, radius, null);
          MutableIntTuple resultMax = IntTuples.add(center, radius+1, null);
          if (min != null)
          {
              IntTuples.max(min, resultMin, resultMin);
              IntTuples.max(min, resultMax, resultMax);
          }
          if (max != null)
          {
              IntTuples.min(max, resultMin, resultMin);
              IntTuples.min(max, resultMax, resultMax);
          }
          return new IntTupleIterator(resultMin, resultMax, 
              IntTupleIncrementors.incrementor(order));
      }
docs: Creates an iterator for iterating over the Moore neighborhood of
  the given center and the given radius.<br>
  <br>
  If the given minimum- or maximum are non-<code>null</code>,
  they will be used for clamping the neighborhood.
  
  @param center The center of the Moore neighborhood
  @param radius The radius of the Moore neighborhood
  @param min The (optional) minimum, inclusive
  @param max The (optional) maximum, exclusive
  @param order The {@link Order} for the iteration
  @return The iterator
  @throws IllegalArgumentException If the given (non-<code>null</code>)
  tuples do not have the same {@link Tuple#getSize() size}