code: public static void serialize(Serializable obj, OutputStream outputStream) {
          if (outputStream == null) {
              throw new IllegalArgumentException("The OutputStream must not be null");
          }
          ObjectOutputStream out = null;
          try {
              // stream closed in the finally
              out = new ObjectOutputStream(outputStream);
              out.writeObject(obj);
  
          } catch (IOException ex) {
              throw new SerializationException(ex);
          } finally {
              try {
                  if (out != null) {
                      out.close();
                  }
              } catch (IOException ex) {
                  // ignore close exception
              }
          }
      }
docs: <p>Serializes an <code>Object</code> to the specified stream.</p>
  
  <p>The stream will be closed once the object is written.
  This avoids the need for a finally clause, and maybe also exception
  handling, in the application code.</p>
  
  <p>The stream passed in is not buffered internally within this method.
  This is the responsibility of your application if desired.</p>
  
  @param obj  the object to serialize to bytes, may be null
  @param outputStream  the stream to write to, must not be null
  @throws IllegalArgumentException if <code>outputStream</code> is <code>null</code>
  @throws SerializationException (runtime) if the serialization fails