private function buildFieldsBox(PhabricatorApplicationSearchEngine $engine)
    {
        $info = pht(<<<EOTEXT
Objects matching your query are returned as a list of dictionaries in the
`data` property of the results. Each dictionary has some metadata and a
`fields` key, which contains the information abou the object that most callers
will be interested in.

For example, the results may look something like this:

```lang=json, name="Example Results"
{
  ...
  "data": [
    {
      "id": 123,
      "phid": "PHID-WXYZ-1111",
      "fields": {
        "name": "First Example Object",
        "authorPHID": "PHID-USER-2222"
      }
    },
    {
      "id": 124,
      "phid": "PHID-WXYZ-3333",
      "fields": {
        "name": "Second Example Object",
        "authorPHID": "PHID-USER-4444"
      }
    },
    ...
  ]
  ...
}
```

This result structure is standardized across all search methods, but the
available fields differ from application to application.

These are the fields available on this object type:
EOTEXT
);
        $specs = $engine->getAllConduitFieldSpecifications();
        $rows = array();
        foreach ($specs as $key => $spec) {
            $type = $spec->getType();
            $description = $spec->getDescription();
            $rows[] = array($key, $type, $description);
        }
        $table = id(new AphrontTableView($rows))->setHeaders(array(pht('Key'), pht('Type'), pht('Description')))->setColumnClasses(array('pri', 'mono', 'wide'));
        return id(new PHUIObjectBoxView())->setHeaderText(pht('Object Fields'))->setCollapsed(true)->appendChild($this->buildRemarkup($info))->appendChild($table);
    }