+ /**
+ * Create an Ipv4Address by interpreting input 32 bits as an IPv4 address in big-endian format.
+ *
+ * @param bits 32 bits, big endian
+ * @return An Ipv4Address object
+ */
+ public final @NonNull A4 ipv4AddressFor(final int bits) {
+ return address4Factory.newInstance(addressString(bits));
+ }
+
+ /**
+ * Create an Ipv4AddressNoZone by interpreting input bytes as an IPv4 address.
+ *
+ * @param bytes 4-byte array
+ * @return An Ipv4AddressNoZone object
+ * @throws IllegalArgumentException if bytes has length different from 4
+ * @throws NullPointerException if bytes is null
+ */
+ public final @NonNull A4NZ ipv4AddressNoZoneFor(final byte @NonNull[] bytes) {
+ return address4NoZoneFactory.newInstance(addressStringV4(bytes));
+ }
+
+ /**
+ * Create an Ipv4AddressNoZone by interpreting an {@link Inet4Address}.
+ *
+ * @param addr An {@link Inet4Address}
+ * @return An Ipv4AddressNoZone object
+ * @throws IllegalArgumentException if addr is not an {@link Inet4Address}
+ * @throws NullPointerException if addr is null
+ */
+ public final @NonNull A4NZ ipv4AddressNoZoneFor(final @NonNull InetAddress addr) {
+ requireNonNull(addr, "Address must not be null");
+ checkArgument(addr instanceof Inet4Address, "Address has to be an Inet4Address");
+ return address4NoZoneFactory.newInstance(addr.getHostAddress());
+ }
+
+ /**
+ * Create an Ipv4AddressNoZone by interpreting input 32 bits as an IPv4 address in big-endian format.
+ *
+ * @param bits 32 bits, big endian
+ * @return An Ipv4AddressNoZone object
+ */
+ public final @NonNull A4NZ ipv4AddressNoZoneFor(final int bits) {
+ return address4NoZoneFactory.newInstance(addressString(bits));
+ }
+
+ public final @NonNull A4 ipv4AddressFrom(final @NonNull P4 prefix) {
+ return prefixToAddress(address4Factory, ipv4PrefixString(prefix));
+ }
+
+ public final @NonNull A4NZ ipv4AddressNoZoneFrom(final @NonNull P4 prefix) {
+ return prefixToAddress(address4NoZoneFactory, ipv4PrefixString(prefix));