whole_func_string: function saveQuery (selection, qs) {
    // var qs = outline.qs // @@
    var q = new UI.rdf.Query()
    var n = selection.length
    var i, sel, st, tr
    for (i = 0; i < n; i++) {
      sel = selection[i]
      tr = sel.parentNode
      st = tr.AJAR_statement
      UI.log.debug('Statement ' + st)
      if (sel.getAttribute('class').indexOf('pred') >= 0) {
        UI.log.info('   We have a predicate')
        makeQueryRow(q, tr)
      }
      if (sel.getAttribute('class').indexOf('obj') >= 0) {
        UI.log.info('   We have an object')
        makeQueryRow(q, tr, true)
      }
    }
    qs.addQuery(q)
  
    function resetOutliner (pat) {
      var n = pat.statements.length
      var pattern, tr
      for (let i = 0; i < n; i++) {
        pattern = pat.statements[i]
        tr = pattern.tr
          // UI.log.debug('tr: ' + tr.AJAR_statement);
        if (typeof tr !== 'undefined') {
          tr.AJAR_pattern = null // TODO: is this == to whats in current version?
          tr.AJAR_variable = null
        }
      }
      for (let x in pat.optional) { resetOutliner(pat.optional[x]) }
    }
    resetOutliner(q.pat)
      // NextVariable=0;
    return q
  }
func_code_string: function saveQuery (selection, qs) {
    // var qs = outline.qs // @@
    var q = new UI.rdf.Query()
    var n = selection.length
    var i, sel, st, tr
    for (i = 0; i < n; i++) {
      sel = selection[i]
      tr = sel.parentNode
      st = tr.AJAR_statement
      UI.log.debug('Statement ' + st)
      if (sel.getAttribute('class').indexOf('pred') >= 0) {
        UI.log.info('   We have a predicate')
        makeQueryRow(q, tr)
      }
      if (sel.getAttribute('class').indexOf('obj') >= 0) {
        UI.log.info('   We have an object')
        makeQueryRow(q, tr, true)
      }
    }
    qs.addQuery(q)
  
    function resetOutliner (pat) {
      var n = pat.statements.length
      var pattern, tr
      for (let i = 0; i < n; i++) {
        pattern = pat.statements[i]
        tr = pattern.tr
          // UI.log.debug('tr: ' + tr.AJAR_statement);
        if (typeof tr !== 'undefined') {
          tr.AJAR_pattern = null // TODO: is this == to whats in current version?
          tr.AJAR_variable = null
        }
      }
      for (let x in pat.optional) { resetOutliner(pat.optional[x]) }
    }
    resetOutliner(q.pat)
      // NextVariable=0;
    return q
  }
func_documentation_string: makeQueryRow