code: function _checkAnnotation (op) {
        switch (op.type) {
          case 'create':
          case 'delete': {
            let node = op.val
            if (node.hasOwnProperty('start') && node.start.path) {
              updated[getKeyForPath(node.start.path)] = true
            }
            if (node.hasOwnProperty('end') && node.end.path) {
              updated[getKeyForPath(node.end.path)] = true
            }
            break
          }
          case 'update':
          case 'set': {
            // HACK: detecting annotation changes in an opportunistic way
            let node = doc.get(op.path[0])
            if (node) {
              if (node.isPropertyAnnotation()) {
                updated[getKeyForPath(node.start.path)] = true
              } else if (node.isContainerAnnotation()) {
                affectedContainerAnnos.push(node)
              }
            }
            break
          }
          default:
            /* istanbul ignore next */
            // NOP
        }
      }
docs: TODO: we will introduce a special operation type for coordinates