docs: function(recursive_trans, ts, pid, kthread,
                                           trans, args) {
  
        var recursive_slice = recursive_trans[1].slice;
        var orig_slice = recursive_trans[0].slice;
        recursive_slice.duration = ts - recursive_slice.start;
        trans.slice = recursive_slice;
  
        if (trans.is_reply_transaction) {
          /* Case one:
           * This transaction is finally the reply of the recursion.
           */
          orig_slice.duration = ts - orig_slice.start;
          this.addSyncTransNeedingCompletion(trans.transaction_key,
               recursive_trans);
  
          if (isReplyToOrigin(recursive_trans[0], trans))
            this.removeRecursiveTransaction(pid);
        } else {
          /**
           *  Case two:
           *  This transaction is more recursive calls.
           *  This is a nested call within an already started transaction,
           *  it can either be a async or a normal sync transaction.
           */
          var slice = kthread.thread.sliceGroup.pushCompleteSlice('binder',
              '' , ts, .03, 0,
              0, args);
  
          trans.slice = slice;
          this.addTransactionWaitingForRecv(trans.transaction_key, trans);
        }
        return true;
      }