code: protected Object getLock (int siteId)
      {
          Object lock = null;
  
          synchronized (_locks) {
              lock = _locks.get(siteId);
  
              // create a lock object if we haven't one already
              if (lock == null) {
                  _locks.put(siteId, lock = new Object());
              }
          }
  
          return lock;
      }
docs: We synchronize on a per-site basis, but we use a separate lock
  object for each site so that the process of loading a bundle for
  the first time does not require blocking access to resources from
  other sites.