code: @Override
     public ItemData getItemData(String identifier) throws RepositoryException
     {
        // from cache at first
        ItemData cdata = persistentManager.getCachedItemData(identifier);
        if (cdata != null && !(cdata instanceof NullItemData))
        {
           return super.getItemData(identifier);
        }
  
        if (!this.equals(versionDataManager) && !identifier.equals(Constants.ROOT_UUID))
        {
           // search in System cache for /jcr:system nodes only
           cdata = versionDataManager.persistentManager.getCachedItemData(identifier);
           if (cdata != null && !(cdata instanceof NullItemData))
           {
              if (isSystemDescendant(cdata.getQPath()))
              {
                 return versionDataManager.getItemData(identifier);
              }
              else
              {
                 return null;
              }
           }
        }
  
        // then from persistence
        ItemData data = super.getItemData(identifier);
        if (data != null)
        {
           return data;
        }
  
        else if (!this.equals(versionDataManager))
        {
           // try from version storage if not the same
           data = versionDataManager.getItemData(identifier);
           if (data != null && isSystemDescendant(data.getQPath()))
           {
              return data;
           }
        }
        return null;
     }
docs: {@inheritDoc}