code: public void addEntityChangeListener(I_CmsEntityChangeListener changeListener, String changeScope) {
  
          if (m_observerdEntity == null) {
              throw new RuntimeException("The Observer has been cleared, no listener registration possible.");
          }
          if (!m_changeListeners.containsKey(changeScope)) {
              m_changeListeners.put(changeScope, new ArrayList<I_CmsEntityChangeListener>());
              // if changeScope==null, it is a global change listener, and we don't need a scope value
              if (changeScope != null) {
                  // save the current change scope value
                  m_scopeValues.put(changeScope, CmsContentDefinition.getValueForPath(m_observerdEntity, changeScope));
              }
          }
          m_changeListeners.get(changeScope).add(changeListener);
      }
docs: Adds an entity change listener for the given scope.<p>
  
  @param changeListener the change listener
  @param changeScope the change scope