anchor.diff:        u.remove(layers, originLayer)
         layers.unshift(originLayer)
       u.detectResult layers, (layer) ->
  -      return firstInLayer(selectorOrElement, layer)
  -
  -  firstInLayer = (selectorOrElement, layer) ->
  -    elements = e.all(selectorOrElement)
  +      return firstInLayer(selector, layer)
  +
  +  firstInLayer = (selector, layer) ->
  +    elements = e.all(selector)
       return u.detectResult elements, (element) ->
         if isRealElement(element) && matchesLayer(element, layer)
           return element
  
positive.code:     or `undefined` if no such element was found.
    @experimental
    ###
    first = (selectorOrElement, options) ->
      options = u.options(options, layer: 'auto')
      resolved = e.resolveSelector(selectorOrElement, options.origin)
      if options.layer == 'auto'
        firstInPriority(resolved, options.origin)
      else
        firstInLayer(resolved, options.layer)
  
    firstInPriority = (selectorOrElement, origin) ->
      layers = ['popup', 'modal', 'page']
      if u.isPresent(origin)
        originLayer = layerOf(origin)
  
negative.code:   ignores elements that are being [destroyed](/up.destroy) or that are being
    removed by a [transition](/up.morph).
  
    Returns `undefined` if no element matches these conditions.
  
    Also see the [`.up-destroying`](/up-destroying) class.
  
    @function up.first
    @param {string} selector
    @param {string} [options.layer='auto']
      The name of the layer in which to find the element.
  
  