code: public InputStream interceptAndPut(String key, InputStream input) throws IOException {
          OutputStream output = openPutStream(key);
          return new CopyingInputStream(input, output);
      }
docs: copy of input, and associate that data with key.