anchor.diff:      return new ListNode.cons(result, tail);
     }
   
  -  /**
  -   * Entry point, evaluates [nodes] and returns result if any.
  -   * 
  -   * @return result of operator, or UNIT for command
  -   */
  +  /// Entry point, evaluates [nodes] and returns result if any.
  +  ///
  +  /// Returns result of operator, or UNIT.
     Node evalSequence(ListNode nodes) {
       return evalSequenceInScope(nodes, globalScope);
     }
   
  -  /**
  -   * Entry point, defines [node], which must be a DefnNode.
  -   * 
  -   * @return result of operator, or UNIT for command
  -   */
  +  /// Entry point, defines [node], which must be a [DefnNode].
  +  ///
  +  /// Returns result of operator, or UNIT.
     void define(DefnNode defn) {
       globalScope.bind(defn.name, defn);
       console.processDefined(defn.name);
     }
   
  -  /**
  -   * Evaluates all commands in [nodes].
  -   *
  -   * @return result of last command, or UNIT if `nodes' was empty
  -   */
  +  /// Evaluates all commands in [nodes].
  +  ///
  +  /// Returns result of last command, or UNIT if `nodes' was empty.
     Node evalSequenceInScope(ListNode nodes, Scope scope) {
       Node result;
       while (!nodes.isNil) {
  
positive.code:     return (100 * src).round() / 100;
    }
  
    /**
     * Evaluates a primitive function (aka command/operator).
     * 
     * Evaluates the primitive function [p] with (yet unevaluated) arguments
     * available in [nodes]. Returns the (uninterpreted) tail.
     */
    ListNode evalPrimFun(Primitive p, ListNode nodes, Scope scope) {
      if (p == Primitive.QUOTE) {
        return nodes;
  
negative.code:     return result;
    }
  
    /// Evaluates [nodes] in scope [scope].
    ///
    /// Returns a list containing result and a suffix of unused nodes.
    ListNode evalInScope(ListNode nodes, Scope scope) {
      if (nodes.isNil) {
        return nodes;
  