code: function (options, iterationInfo) {
          var files;
          var modules = {};
  
          // check if the counter has reached the desired depth indicated in options.depth
          if (typeof options.depth !== 'undefined' &&
              iterationInfo.currentDepth >= options.depth) {
              return;
          }
  
          // remember the starting directory
          try {
              files = fs.readdirSync(iterationInfo.dirName);
          } catch (e) {
              if (options.optional)
                  return {};
              else
                  throw new Error('Directory not found: ' + iterationInfo.dirName);
          }
  
          // iterate through files in the current directory
          files.forEach(function (fileName) {
              iterationInfo.fileName = fileName;
              //get absolute path
              iterationInfo.absolutePath = rtrim(iterationInfo.dirName, '/');
              iterationInfo.absoluteFullPath = iterationInfo.absolutePath + '/' + fileName;
              //get relative path
              iterationInfo.relativePath = iterationInfo.absolutePath.replace(iterationInfo.initialDirName, '');
              iterationInfo.relativeFullPath = iterationInfo.absoluteFullPath.replace(iterationInfo.initialDirName, '');
              // make sure a slash exists on the left side of relative paths
              iterationInfo.relativePath = '/' + ltrim(iterationInfo.relativePath, '/');
              iterationInfo.relativeFullPath = '/' + ltrim(iterationInfo.relativeFullPath, '/');
  
              if (fs.statSync(iterationInfo.absoluteFullPath).isDirectory()) {
                  processDirectory(options, iterationInfo, modules)
              }
              else {
                  processFile(options, iterationInfo, modules);
              }
          });
  
          return modules;
      }
docs: Parses a directory (will be then iteratively called for all subdirectories) or loads a file.
  @param options
  @param iterationInfo
  @returns {{}}