code: public static final Object reconstruct(String string, ExternalContext ctx)
      {
          byte[] bytes;
          try
          {
              if(log.isLoggable(Level.FINE))
              {
                  log.fine("Processing state : " + string);
              }
  
              bytes = string.getBytes(ZIP_CHARSET);
              bytes = decode(bytes);
              if(isSecure(ctx))
              {
                  bytes = decrypt(bytes, ctx);
              }
              if( enableCompression(ctx) )
              {
                  bytes = decompress(bytes);
              }
              return getAsObject(bytes, ctx);
          }
          catch (Throwable e)
          {
              if (log.isLoggable(Level.FINE))
              {
                  log.log(Level.FINE, "View State cannot be reconstructed", e);
              }
              return null;
          }
      }
docs: This fires during the Restore View phase, restoring state.