code: public CmsXmlGroupContainer getCacheGroupContainer(String key, boolean online) {
  
          try {
              m_lock.readLock().lock();
              CmsXmlGroupContainer retValue;
              if (online) {
                  retValue = m_groupContainersOnline.get(key);
                  if (LOG.isDebugEnabled()) {
                      if (retValue == null) {
                          LOG.debug(
                              Messages.get().getBundle().key(
                                  Messages.LOG_DEBUG_CACHE_MISSED_ONLINE_1,
                                  new Object[] {key}));
  
                      } else {
                          LOG.debug(
                              Messages.get().getBundle().key(
                                  Messages.LOG_DEBUG_CACHE_MATCHED_ONLINE_2,
                                  new Object[] {key, retValue}));
                      }
                  }
              } else {
                  retValue = m_groupContainersOffline.get(key);
                  if (LOG.isDebugEnabled()) {
                      if (retValue == null) {
                          LOG.debug(
                              Messages.get().getBundle().key(
                                  Messages.LOG_DEBUG_CACHE_MISSED_OFFLINE_1,
                                  new Object[] {key}));
  
                      } else {
                          LOG.debug(
                              Messages.get().getBundle().key(
                                  Messages.LOG_DEBUG_CACHE_MATCHED_OFFLINE_2,
                                  new Object[] {key, retValue}));
                      }
                  }
              }
              return retValue;
          } finally {
              m_lock.readLock().unlock();
          }
      }
docs: Returns the cached group container under the given key and for the given project.<p>
  
  @param key the cache key
  @param online if cached in online or offline project
  
  @return the cached group container or <code>null</code> if not found