code: function _createRange ({start, end, isReverse}) {
    if (isReverse) {
      [start, end] = [end, start]
    }
    if (!start._comp || !end._comp) {
      console.error('FIXME: getCoordinate() should provide a component instance')
      return null
    }
    let surface = start._comp.context.surface
    if (!surface) {
      console.error('FIXME: Editable components should have their surface in the context')
      return null
    }
    if (surface !== end._comp.context.surface) {
      console.error('Coordinates are within two different surfaces. Can not create a selection.')
      return null
    }
    return new Range(start, end, isReverse, surface.getContainerPath(), surface.id)
  }
docs: /*
  Helper for creating a model range correctly
  as for model/Range start should be before end.
  
  In contrast to that, DOM selections are described with anchor and focus coordinates,
  i.e. bearing the information of direction implicitly.
  To simplify the implementation we treat anchor and focus equally
  and only at the end exploit the fact deriving an isReverse flag
  and bringing start and end in the correct order.