code: function walkObject (prefix, object, leaves) {
    Object.keys(object).forEach((key) => {
      const value = object[key]
      const fullPrefix = (prefix) ? prefix + '.' + key : key
      if (__.isObject(value) && !__.isArray(value)) {
        walkObject(fullPrefix, value, leaves)
      } else {
        leaves[fullPrefix] = value
      }
    })
  }
docs: Walk the properties of an object (recursively) while converting it to a flat representation of the leaves of the
  object (properties with primitive, non-object types which need their default value set).
  representing the leaves (the actual values that need defaults)
  @param {String} prefix - the key prefix for the object being processed
  @param {Object} object - the complex, nested object of default values currently being processed
  @param {Object} leaves - the simple key-value mapping of object path -> value