private function renderMailBody(PhabricatorAuditComment $comment, $cname, PhabricatorObjectHandle $handle, PhabricatorMailReplyHandler $reply_handler, array $inline_comments)
 {
     assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface');
     $commit = $this->commit;
     $user = $this->user;
     $name = $user->getUsername();
     $verb = PhabricatorAuditActionConstants::getActionPastTenseVerb($comment->getAction());
     $body = array();
     $body[] = "{$name} {$verb} commit {$cname}.";
     if ($comment->getContent()) {
         $body[] = $comment->getContent();
     }
     if ($inline_comments) {
         $block = array();
         $path_map = id(new DiffusionPathQuery())->withPathIDs(mpull($inline_comments, 'getPathID'))->execute();
         $path_map = ipull($path_map, 'path', 'id');
         foreach ($inline_comments as $inline) {
             $path = idx($path_map, $inline->getPathID());
             if ($path === null) {
                 continue;
             }
             $start = $inline->getLineNumber();
             $len = $inline->getLineLength();
             if ($len) {
                 $range = $start . '-' . ($start + $len);
             } else {
                 $range = $start;
             }
             $content = $inline->getContent();
             $block[] = "{$path}:{$range} {$content}";
         }
         $body[] = "INLINE COMMENTS\n  " . implode("\n  ", $block);
     }
     $body[] = "COMMIT\n  " . PhabricatorEnv::getProductionURI($handle->getURI());
     $reply_instructions = $reply_handler->getReplyHandlerInstructions();
     if ($reply_instructions) {
         $body[] = "REPLY HANDLER ACTIONS\n  " . $reply_instructions;
     }
     return implode("\n\n", $body) . "\n";
 }