@Override
    public void close() {
      myMemWatcher.stop();
      Throwable ex = null;
      for (Closeable container : Iterators.flat(myMaps, Iterators.asIterable(myStringTable))) {
        try {
          container.close();
        }
        catch (Throwable e) {
          if (ex == null) {
            ex = e;
          }
        }
      }
      myMaps.clear();
      myInternerCache.invalidateAll();
      if (ex instanceof IOException) {
        throw new BuildDataCorruptedException((IOException)ex);
      }
      else if (ex != null) {
        throw new RuntimeException(ex);
      }
    }
@Override
    public void close()