whole_func_string: function render () {
        subject = kb.canon(subject)
        if (!p || !p.parentNode || !p.parentNode.parentNode) return false
  
        var newTable
        UI.log.info('@@ REPAINTING ')
        if (!already) { // first expand
          newTable = propertyTable(subject, undefined, pane, options)
        } else {
          UI.log.info(' ... p is  ' + p)
          for (newTable = p.firstChild; newTable.nextSibling; newTable = newTable.nextSibling) {
            UI.log.info(' ... checking node ' + newTable)
            if (newTable.nodeName === 'table') break
          }
          newTable = propertyTable(subject, newTable, pane, options)
        }
        already = true
        if (UI.utils.ancestor(p, 'TABLE') && UI.utils.ancestor(p, 'TABLE').style.backgroundColor === 'white') {
          newTable.style.backgroundColor = '#eee'
        } else {
          newTable.style.backgroundColor = 'white'
        }
        try {
          if (YAHOO.util.Event.off) YAHOO.util.Event.off(p, 'mousedown', 'dragMouseDown')
        } catch (e) {
          console.log('YAHOO ' + e)
        }
        UI.utils.emptyNode(p).appendChild(newTable)
        thisOutline.focusTd = p // I don't know why I couldn't use 'this'...because not defined in callbacks
        UI.log.debug('expand: Node for ' + subject + ' expanded')
            // fetch seeAlso when render()
            // var seeAlsoStats = sf.store.statementsMatching(subject, UI.ns.rdfs('seeAlso'))
            // seeAlsoStats.map(function (x) {sf.lookUpThing(x.object, subject,false);})
        var seeAlsoWhat = kb.each(subject, UI.ns.rdfs('seeAlso'))
        for (var i = 0; i < seeAlsoWhat.length; i++) {
          if (i === 25) {
            UI.log.warn('expand: Warning: many (' +
                  seeAlsoWhat.length + ') seeAlso links for ' + subject)
                // break; Not sure what limits the AJAX system has here
          }
          sf.lookUpThing(seeAlsoWhat[i], subject)
        }
      }
func_code_string: function render () {
        subject = kb.canon(subject)
        if (!p || !p.parentNode || !p.parentNode.parentNode) return false
  
        var newTable
        UI.log.info('@@ REPAINTING ')
        if (!already) { // first expand
          newTable = propertyTable(subject, undefined, pane, options)
        } else {
          UI.log.info(' ... p is  ' + p)
          for (newTable = p.firstChild; newTable.nextSibling; newTable = newTable.nextSibling) {
            UI.log.info(' ... checking node ' + newTable)
            if (newTable.nodeName === 'table') break
          }
          newTable = propertyTable(subject, newTable, pane, options)
        }
        already = true
        if (UI.utils.ancestor(p, 'TABLE') && UI.utils.ancestor(p, 'TABLE').style.backgroundColor === 'white') {
          newTable.style.backgroundColor = '#eee'
        } else {
          newTable.style.backgroundColor = 'white'
        }
        try {
          if (YAHOO.util.Event.off) YAHOO.util.Event.off(p, 'mousedown', 'dragMouseDown')
        } catch (e) {
          console.log('YAHOO ' + e)
        }
        UI.utils.emptyNode(p).appendChild(newTable)
        thisOutline.focusTd = p // I don't know why I couldn't use 'this'...because not defined in callbacks
        UI.log.debug('expand: Node for ' + subject + ' expanded')
            // fetch seeAlso when render()
            // var seeAlsoStats = sf.store.statementsMatching(subject, UI.ns.rdfs('seeAlso'))
            // seeAlsoStats.map(function (x) {sf.lookUpThing(x.object, subject,false);})
        var seeAlsoWhat = kb.each(subject, UI.ns.rdfs('seeAlso'))
        for (var i = 0; i < seeAlsoWhat.length; i++) {
          if (i === 25) {
            UI.log.warn('expand: Warning: many (' +
                  seeAlsoWhat.length + ') seeAlso links for ' + subject)
                // break; Not sure what limits the AJAX system has here
          }
          sf.lookUpThing(seeAlsoWhat[i], subject)
        }
      }
func_documentation_string: var requTerm = subject.uri ? kb.sym(UI.rdf.uri.docpart(subject.uri)) : subject