docs: @Override
      public INodeSet getNodeSet() {
          //iterate through sources, and add nodes
          final NodeSetMerge list = getNodeSetMerge();
          Map<String,Exception> exceptions = Collections.synchronizedMap(new HashMap<>());
          int index=1;
  
          nodesSourceExceptions.clear();
          for (final ResourceModelSource nodesSource : getResourceModelSourcesInternal()) {
              try {
                  INodeSet nodes = nodesSource.getNodes();
                  if (null == nodes) {
                      logger.warn("Empty nodes result from [" + nodesSource.toString() + "]");
                  } else {
                      list.addNodeSet(nodes);
                  }
                  if(nodesSource instanceof ResourceModelSourceErrors){
                      ResourceModelSourceErrors nodeerrors = (ResourceModelSourceErrors) nodesSource;
                      List<String> modelSourceErrors = nodeerrors.getModelSourceErrors();
                      if(modelSourceErrors!=null && modelSourceErrors.size()>0){
  
                          logger.error("Some errors getting nodes from [" +
                                       nodesSource.toString() +
                                       "]: " +
                                       modelSourceErrors);
                          exceptions.put(
                                  index + ".source",
                                  new ResourceModelSourceException(
                                          TextUtils.join(
                                                  modelSourceErrors.toArray(new String[0]),
                                                  ';'
                                          )
                                  )
                          );
                      }
                  }
              } catch (ResourceModelSourceException | RuntimeException e) {
                  logger.error("Cannot get nodes from [" + nodesSource.toString() + "]: " + e.getMessage());
                  logger.debug("Cannot get nodes from [" + nodesSource.toString() + "]: " + e.getMessage(), e);
                  exceptions.put(
                          index+".source",
                          new ResourceModelSourceException(
                                  e.getMessage(), e
                          )
                  );
              } catch (Throwable e) {
                  logger.error("Cannot get nodes from [" + nodesSource.toString() + "]: " + e.getMessage());
                  logger.debug("Cannot get nodes from [" + nodesSource.toString() + "]: " + e.getMessage(), e);
                  exceptions.put(
                          index+".source",
                          new ResourceModelSourceException(
                                  e.getMessage()
                          )
                  );
              }
              index++;
          }
          synchronized (nodesSourceExceptions){
              nodesSourceExceptions.putAll(exceptions);
          }
          return list;
  
      }