docs: function(eventName, cpuNumber, pid, ts, eventBase) {
        var event = binderTransRE.exec(eventBase.details);
        if (event === undefined)
          return false;
  
        var tgid = parseInt(eventBase.tgid);
  
        this.doNameMappings(pid, tgid, eventBase.threadName);
  
        var kthread;
        kthread = this.importer_.
            getOrCreateBinderKernelThread(eventBase.threadName, tgid, pid);
  
        var trans = new BinderTransaction(event, pid, ts, kthread);
        var args = generateBinderArgsForSlice(trans, eventBase.threadName);
        /**
         * This thread previously ack'd the transaction with a
         * transaction_received. That means someone sent us a message we processed
         * it and are now sending a transaction.
         * The transaction could be a response, or it could be recursive.
         */
        var prior_receive = this.getPriorReceiveOnPID(pid);
  
        if (prior_receive !== false) {
          return this.modelPriorReceive(prior_receive, ts, pid, tgid, kthread,
              trans, args, event);
        }
        /**
         * This Thread has an already established recursive slice. We will now
         * either complete the entire transaction, OR do more recursive calls.
         */
        var recursive_trans = this.getRecursiveTransactionNeedingCompletion(pid);
  
        if (recursive_trans !== false)
          return this.modelRecursiveTransactions(recursive_trans, ts, pid,
              kthread, trans, args);
  
        /**
         * Start of a Transaction. This thread is the initiator of either a call
         * response, an async call -> ack, or a call -> recursion -> response.
         * Note, we put a fake duration into this slice and patch it up later.
         */
        var slice = kthread.thread.sliceGroup.pushCompleteSlice('binder',
            '', ts, .03, 0, 0, args);
  
        slice.colorId = ColorScheme.getColorIdForGeneralPurposeString(
            ts.toString());
        trans.slice = slice;
  
        if (trans.expect_reply)
          slice.title = 'binder transaction';
        else
          slice.title = 'binder transaction async';
  
        this.addTransactionWaitingForRecv(trans.transaction_key, trans);
  
        return true;
      }