docs: public boolean hasChanged(PersistenceBroker broker)
      {
          if(hasChanged == null)
          {
              Map current = null;
              try
              {
                  current = getCurrentImage();
              }
              catch(Exception e)
              {
                  log.warn("Could not verify object changes, mark dirty: " + getIdentity(), e);
              }
              if(beforeImage != null && current != null)
              {
                  Iterator it = beforeImage.entrySet().iterator();
                  hasChanged = Boolean.FALSE;
                  while(it.hasNext())
                  {
                      Map.Entry entry =  (Map.Entry) it.next();
                      Image imageBefore = (Image) entry.getValue();
                      Image imageCurrent = (Image) current.get(entry.getKey());
                      if(imageBefore.modified(imageCurrent))
                      {
                          hasChanged = Boolean.TRUE;
                          break;
                      }
                  }
              }
              else
              {
                  hasChanged = Boolean.TRUE;
              }
              if(log.isDebugEnabled())
              {
                  log.debug("State detection for " + getIdentity() + " --> object "
                          + (hasChanged.booleanValue() ? "has changed" : "unchanged"));
              }
          }
          return hasChanged.booleanValue();
      }