code: function checkTree(mp) {
      const paths = mp.map(rule => rule.match);
      paths.forEach(path => checkPath(path));
      if (paths.length <= 1) { // Only one rule, no need to check for shadowing
          return true;
      }
      paths.reduce((a, b) => {
          const [ diffA, diffB ] = keepDifference(a, b);
          if (diffA[0] === '**' && diffA[1] === '*' &&
              !(diffB.length === 1 && diffB[0] === '/')) {
              warn(`Inaccessible paths: "${a.join('/')}" shadows following ` +
                   `paths (will never match). Place more specifics rules on top.`);
          }
          return b;
      });
  }
docs: Doesn't modify passed argument