docs: private void writeObject(final ObjectOutputStream out) throws IOException {
  		// write all the non-transient fields
  		out.defaultWriteObject();
  
  		// write the non-serializable default value field
  		if (defaultValue == null) {
  			// we don't have a default value
  			out.writeBoolean(false);
  		} else {
  			// we have a default value
  			out.writeBoolean(true);
  
  			byte[] serializedDefaultValue;
  			try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
  					DataOutputViewStreamWrapper outView = new DataOutputViewStreamWrapper(baos)) {
  
  				TypeSerializer<T> duplicateSerializer = serializer.duplicate();
  				duplicateSerializer.serialize(defaultValue, outView);
  
  				outView.flush();
  				serializedDefaultValue = baos.toByteArray();
  			}
  			catch (Exception e) {
  				throw new IOException("Unable to serialize default value of type " +
  						defaultValue.getClass().getSimpleName() + ".", e);
  			}
  
  			out.writeInt(serializedDefaultValue.length);
  			out.write(serializedDefaultValue);
  		}
  	}