relatedPaths(recursive = true) {
    let paths;

    if (this.definition.hasDynamicPaths)
      paths = this.depPaths.map(
        p => getIn(this.tree._data, p).solvedPath
      );
    else
      paths = this.depPaths;

    const isRecursive = recursive && this.depPaths.some(
      p => !! type.monkeyPath(this.tree._monkeys, p)
    );

    if (!isRecursive)
      return paths;

    return paths.reduce((accumulatedPaths, path) => {
      const monkeyPath = type.monkeyPath(this.tree._monkeys, path);

      if (!monkeyPath)
        return accumulatedPaths.concat([path]);

      // Solving recursive path
      const relatedMonkey = getIn(this.tree._monkeys, monkeyPath).data;

      return accumulatedPaths.concat(relatedMonkey.relatedPaths());
    }, []);
  }
Method returning solved paths related to the monkey.

@param  {boolean} recursive - Should we compute recursive paths?
@return {array}             - An array of related paths.