code: public void writeDescribe(Describe describe) {
      ensureBuffer();
      int pos = out.writerIndex();
      out.writeByte(DESCRIBE);
      out.writeInt(0);
      if (describe.statement != 0) {
        out.writeByte('S');
        out.writeLong(describe.statement);
      } else if (describe.portal != null) {
        out.writeByte('P');
        Util.writeCStringUTF8(out, describe.portal);
      } else {
        out.writeByte('S');
        Util.writeCStringUTF8(out, "");
      }
      out.setInt(pos + 1, out.writerIndex() - pos- 1);
    }
docs: <p>
  The message that using "statement" variant specifies the name of an existing prepared statement.
  <p>
  The response is a {@link ParameterDescription} message describing the parameters needed by the statement,
  followed by a {@link RowDescription} message describing the rows that will be returned when the statement is eventually
  executed or a {@link NoData} message if the statement will not return rows.
  {@link ErrorResponse} is issued if there is no such prepared statement.
  <p>
  Note that since {@link Bind} has not yet been issued, the formats to be used for returned columns are not yet known to
  the backend; the format code fields in the {@link RowDescription} message will be zeroes in this case.
  <p>
  The message that using "portal" variant specifies the name of an existing portal.
  <p>
  The response is a {@link RowDescription} message describing the rows that will be returned by executing the portal;
  or a {@link NoData} message if the portal does not contain a query that will return rows; or {@link ErrorResponse}
  if there is no such portal.