/**
     * Save the given fragment in the cache. (Also registers as a DataListener on the appropriate
     * rollup instance list, so it can invalidate this cache entry if the instance list changes.)
     */
    public String put(String rollupID, String fragment) {
      if (!contents.containsKey(rollupID))
        data.addDataListener(rollupInstanceList(rollupID), this, false);

      contents.put(rollupID, fragment);
      return fragment;
    }