docs: public CmsResource readResource(String resourcename, CmsResourceFilter filter) throws CmsException {
  
          CmsResource res = null;
  
          // iterate through all wrappers and call "readResource" till one does not return null
          List<I_CmsResourceWrapper> wrappers = getWrappers();
          Iterator<I_CmsResourceWrapper> iter = wrappers.iterator();
          while (iter.hasNext()) {
              I_CmsResourceWrapper wrapper = iter.next();
              res = wrapper.readResource(m_cms, resourcename, filter);
              if (res != null) {
                  break;
              }
          }
  
          // delegate the call to the CmsObject
          if (res == null) {
              res = m_cms.readResource(resourcename, filter);
          }
  
          // correct the length of the content if an UTF-8 marker would be added later
          if (needUtf8Marker(res) && !startsWithUtf8Marker(res)) {
              CmsWrappedResource wrap = new CmsWrappedResource(res);
              wrap.setLength(res.getLength() + CmsResourceWrapperUtils.UTF8_MARKER.length);
  
              return wrap.getResource();
          }
  
          return res;
      }