anchor.diff:  
   # Add a DOM element with associated metadata to be tracked by Xray
   Xray.add = (el, info = {}) ->
  -  unless !el || el.length == 0 || Xray.findElement(el)
  -    Xray.elements.push new Xray.Element(el, info)
  +  unless !el || el.length == 0 || Xray.findSpecimen(el)
  +    Xray.specimens.push new Xray.Specimen(el, info)
   
   # Remove a DOM element from Xray
   Xray.remove = (el) ->
  -  if el instanceof Xray.Element
  -    Xray.elements.splice(Xray.elements.indexOf(el), 1)
  +  if el instanceof Xray.Specimen
  +    Xray.specimens.splice(Xray.specimens.indexOf(el), 1)
     else
  -    Xray.remove Xray.findElement(el)
  +    Xray.remove Xray.findSpecimen(el)
   
  -Xray.findElement = (el) ->
  +Xray.findSpecimen = (el) ->
     el = el[0] if el instanceof jQuery
  -  for element in Xray.elements
  +  for element in Xray.specimens
       return element if element.el == el
     null
   
  
positive.code:   for own info, func of window.XrayData
      return info if func is constructor
  
  # Scans the document for templates, creating Xray.Elements for them.
  Xray.addTemplateElements = ->
    comments = $('*:not(iframe,script)').contents().filter ->
      this.nodeType == 8 and this.data[0..10] == " XRAY START"
    for comment in comments
      [_, id, path] = comment.data.match(/^ XRAY START (\d+) (.*) $/)
      $templateContents = new jQuery
  
negative.code:     $('head').append @$style
      $('body').append @$overlay
      @shownBoxes = []
      Xray.addTemplates()
      for element in Xray.specimens
        continue unless element.isVisible()
        element.makeBox()
        element.$box.css(zIndex: Math.ceil((10000 + element.bbox.top + element.bbox.left)))
        @shownBoxes.push element.$box
        $('body').append element.$box
  
  