docs: function normalizeEventsConfig(events) {
    let newEvents = {}
  
    Object.keys(events).forEach((eventName) => {
      let event = Object.assign({}, events[eventName])
      newEvents[eventName] = event
  
      let tags = Object.assign({}, event.tags)
      event.tags = tags
  
      Object.keys(tags).forEach((tagName) => {
        let tag = Object.assign({}, tags[tagName])
        tags[tagName] = tag
  
        if (tag.impliedBy) {
          throw new Error('"impliedBy" must not be set explicitly')
        }
  
        if (tag.goesAfter) {
          tag.goesAfter.forEach((goesAfterTagName) => {
            tags[goesAfterTagName] = tags[goesAfterTagName] || {}
          })
        }
  
        if (tag.goesBefore) {
          tag.goesBefore.forEach((goesBeforeTagName) => {
            tags[goesBeforeTagName] = tags[goesBeforeTagName] || {}
          })
        }
  
        if (tag.implies) {
          tag.implies.forEach((impliedTagName) => {
            tags[impliedTagName] = tags[impliedTagName] || {}
            tags[impliedTagName].impliedBy = tags[impliedTagName].impliedBy || []
            tags[impliedTagName].impliedBy.push(tagName)
          })
        }
      })
    })
  
    return newEvents
  }