code: public static OperaProfile fromJson(String json) throws IOException {
      File directory = TemporaryFilesystem.getDefaultTmpFS().createTempDir("opera", "duplicate");
      new Zip().unzip(json, directory);
      return new OperaProfile(directory);
    }
docs: Converts a JSON string object to a profile representation, returning a new instance of {@link
  OperaProfile}.  This is used by the JsonWireProtocol to transfer a profile.
  
  @param json a base64-encoded JSON string (archive) representing a profile
  @return a new profile representation
  @throws IOException if an I/O error occurs