code: public static final String construct(Object object, ExternalContext ctx)
      {
          byte[] bytes = getAsByteArray(object, ctx);
          if( enableCompression(ctx) )
          {
              bytes = compress(bytes);
          }
          if(isSecure(ctx))
          {
              bytes = encrypt(bytes, ctx);
          }
          bytes = encode(bytes);
          try
          {
              return new String(bytes, ZIP_CHARSET);
          }
          catch (UnsupportedEncodingException e)
          {
              throw new FacesException(e);
          }
      }
docs: This fires during the Render Response phase, saving state.