private ResourcesDef readResourcesDefinition(Element resourcesElement) {
      String name = resourcesElement.getAttribute("name");
      Assert.ifEmpty(name, "can`t read resources bundle without name");

      ResourcesDef resDef = new ResourcesDef(name);

      String depends = resourcesElement.getAttribute("depends");
      if (isNoneEmpty(depends)) {
        resDef.setDepends(
            Arrays.stream(StringUtils.split(depends, ","))
                .map(StringUtils::trim)
                .collect(Collectors.toList()));
      }

      readResources(resourcesElement, resDef);

      return resDef;
    }
    private void readResources(Element resourcesElement, ResourcesDef resDef) {
      XmlUtils.iterateSubElements(
          resourcesElement,
          element -> {
            XmlManifestResourceElement resourceElement = new XmlManifestResourceElement(element);

            Optional<ResourceReader> optional =
                resourcesReaders
                    .stream()
                    .filter(reader -> reader.accept(resourceElement))
                    .findFirst();

            try {
              if (optional.isPresent())
                resDef.addResource(optional.get().read(resourceElement, fileScope));
            } catch (Exception e) {
              throw new JumbleException("Fail to load resource: " + element.getTagName(), e);
            }
          });
    }