private function buildObjectTranscriptPanel(HeraldTranscript $xscript)
 {
     $adapter = $this->getAdapter();
     $field_names = $adapter->getFieldNameMap();
     $object_xscript = $xscript->getObjectTranscript();
     $data = array();
     if ($object_xscript) {
         $phid = $object_xscript->getPHID();
         $handles = $this->handles;
         $data += array(pht('Object Name') => $object_xscript->getName(), pht('Object Type') => $object_xscript->getType(), pht('Object PHID') => $phid, pht('Object Link') => $handles[$phid]->renderLink());
     }
     $data += $xscript->getMetadataMap();
     if ($object_xscript) {
         foreach ($object_xscript->getFields() as $field => $value) {
             $field = idx($field_names, $field, '[' . $field . '?]');
             $data['Field: ' . $field] = $value;
         }
     }
     $rows = array();
     foreach ($data as $name => $value) {
         if (!$value instanceof PhutilSafeHTML) {
             if (!is_scalar($value) && !is_null($value)) {
                 $value = implode("\n", $value);
             }
             if (strlen($value) > 256) {
                 $value = phutil_tag('textarea', array('class' => 'herald-field-value-transcript'), $value);
             }
         }
         $rows[] = array($name, $value);
     }
     $property_list = new PHUIPropertyListView();
     $property_list->setStacked(true);
     foreach ($rows as $row) {
         $property_list->addProperty($row[0], $row[1]);
     }
     $box = new PHUIObjectBoxView();
     $box->setHeaderText(pht('Object Transcript'));
     $box->appendChild($property_list);
     return $box;
 }