code: @SuppressWarnings("unchecked")
    public static <T> T readObjectFromConfAsBase64(String key, Configuration conf) throws IOException {
      String b64 = conf.get(key);
      if (b64 == null) {
        return null;
      }
  
      byte[] bytes = Base64.decodeBase64(b64.getBytes(Charsets.UTF_8));
  
      ByteArrayInputStream bais = null;
      GZIPInputStream gis = null;
      ObjectInputStream ois = null;
  
      try {
        bais = new ByteArrayInputStream(bytes);
        gis = new GZIPInputStream(bais);
        ois = new ObjectInputStream(gis);
        return (T) ois.readObject();
      } catch (ClassNotFoundException e) {
        LOG.error("Could not read object from config with key " + key, e);
        throw new IOException(e);
      } catch (ClassCastException e) {
        LOG.error("Couldn't cast object read from config with key " + key, e);
        throw new IOException(e);
      } finally {
        Closeables.close(ois, false);
        Closeables.close(gis, false);
        Closeables.close(bais, false);
      }
    }
docs: Reads an object (that was written using
  {@link #writeObjectToConfAsBase64}) from a configuration.
  
  @param key for the configuration
  @param conf to read from
  @return the read object, or null if key is not present in conf
  @throws IOException