synchronized long computeETag() {
    long e=etag+1;
    int offset=1;
    if (depLoaderMap!=null)
      for (TextSource t: depLoaderMap.values())
        e+=t.computeETag()*(offset++);
    return e;
  }