docs: function addSourceInfoToML(memberLog, source) {
  
    let cloned = memberLog.slice();
  
    for (const [key, value] of getIterableObjectEntries(source)) {
  
      if (Talent.typeCheck(value)) {
  
        cloned = addSourceInfoToML(cloned, value);
      }
  
      const foundAndCloned = clone(findWhereKey(cloned, key));
  
      if (!foundAndCloned && !Talent.typeCheck(value)) {
  
        cloned.push({[key]: [value]});
      } else if (!Talent.typeCheck(value)) {
  
        foundAndCloned[key].push(value);
      }
    }
  
    return cloned;
  }