code: public static QName[][] getExtProps(final String domains) {
          // FIXME Dont' mix arrays and collections
          final List<QName[]> propsBuffer = new ArrayList<>();
          int propsStart = domains.indexOf("a(" + ATTRIBUTE_NAME_PROPS);
          int propsEnd = domains.indexOf(")",propsStart);
          while (propsStart != -1 && propsEnd != -1) {
              final String propPath = domains.substring(propsStart + 2, propsEnd).trim();
              final List<QName> propList = Stream.of(propPath.split("\\s+"))
                      .map(QName::valueOf)
                      .collect(Collectors.toList());
              propsBuffer.add(propList.toArray(new QName[0]));
              propsStart = domains.indexOf("a(" + ATTRIBUTE_NAME_PROPS, propsEnd);
              propsEnd = domains.indexOf(")",propsStart);
          }
          return propsBuffer.toArray(new QName[propsBuffer.size()][]);
      }
docs: Parse {@code props} attribute specializations
  
  @param domains input domain
  @return list of {@code props} attribute specializations