docs: protected static <R extends AddressSection, S extends AddressSegment> R fastIncrement(
  			R section,
  			long increment,
  			AddressCreator<?, R, ?, S> addrCreator, 
  			Supplier<R> lowerProducer,
  			Supplier<R> upperProducer,
  			Integer prefixLength) {
  		if(increment >= 0) {
  			BigInteger count = section.getCount();
  			if(count.compareTo(LONG_MAX) <= 0) {
  				long longCount = count.longValue();
  				if(longCount > increment) {
  					if(longCount == increment + 1) {
  						return upperProducer.get();
  					}
  					return incrementRange(section, increment, addrCreator, lowerProducer, prefixLength);
  				}
  				BigInteger value = section.getValue();
  				BigInteger upperValue;
  				if(value.compareTo(LONG_MAX) <= 0 && (upperValue = section.getUpperValue()).compareTo(LONG_MAX) <= 0) {
  					return increment(
  							section,
  							increment,
  							addrCreator,
  							count.longValue(),
  							value.longValue(),
  							upperValue.longValue(),
  							lowerProducer,
  							upperProducer,
  							prefixLength);
  				}
  			}
  		} else {
  			BigInteger value = section.getValue();
  			if(value.compareTo(LONG_MAX) <= 0) {
  				return add(lowerProducer.get(), value.longValue(), increment, addrCreator, prefixLength);
  			}
  		}
  		return null;
  	}