code: public List<String> getUptodateModules() {
  
          if (m_uptodateModules == null) {
              m_uptodateModules = new ArrayList<String>();
              m_modulesToUpdate = new ArrayList<String>();
              Map<String, CmsModuleVersion> installedModules = getInstalledModules();
              Map<String, CmsModule> availableModules = getAvailableModules();
              Iterator<Map.Entry<String, CmsModule>> itMods = availableModules.entrySet().iterator();
              while (itMods.hasNext()) {
                  Map.Entry<String, CmsModule> entry = itMods.next();
                  String name = entry.getKey();
                  CmsModuleVersion instVer = installedModules.get(name);
                  CmsModuleVersion availVer = entry.getValue().getVersion();
                  boolean uptodate = (!UPDATE_ALL_MODULES) && ((instVer != null) && (instVer.compareTo(availVer) >= 0));
                  if (uptodate) {
                      m_uptodateModules.add(name);
                  } else {
                      m_modulesToUpdate.add(name);
                  }
                  if (LOG.isDebugEnabled()) {
                      LOG.debug(
                          name + " --- installed: " + instVer + " available: " + availVer + " --- uptodate: " + uptodate);
                  }
              }
          }
          return m_uptodateModules;
      }
docs: Returns the modules that does not need to be updated.<p>
  
  @return a list of module names