/**
  * @param Parser $parser
  * @param PPFrame $frame
  * @param array $args
  *
  * @return array Wikitext
  */
 public function runPropertyParserFunction(Parser $parser, PPFrame $frame, array $args)
 {
     $propertyLabelOrId = $frame->expand($args[0]);
     unset($args[0]);
     // Create a child frame, so that we can access arguments by name.
     $childFrame = $frame->newChild($args, $parser->getTitle());
     $entityId = $this->getEntityIdForStatementListProvider($parser, $childFrame, $args);
     if ($entityId === null) {
         return $this->buildResult('');
     }
     $renderer = $this->rendererFactory->newRendererFromParser($parser);
     $rendered = $renderer->render($entityId, $propertyLabelOrId);
     $result = $this->buildResult($rendered);
     // Track usage of "other" (that is, not label/title/sitelinks) data from the item.
     $usageAcc = new ParserOutputUsageAccumulator($parser->getOutput());
     $usageAcc->addOtherUsage($entityId);
     return $result;
 }