/**
  * Rewrites a Drupal 7 field lookup like so:
  *
  * $node->body[LANGUAGE_NONE][0]['value'] --> $node->body[0]->value
  * $node->body['fr'][0]['value'] --> $node->getTranslation('fr')->body[0]->value
  *
  * @param \Pharborist\ArrayLookupNode $node
  *  The original field lookup.
  *
  * @return \Pharborist\ExpressionNode
  */
 public static function rewriteFieldLookup(ArrayLookupNode $node)
 {
     $keys = $node->getKeys();
     /** @var \Pharborist\Objects\ObjectPropertyNode $root */
     $root = $node->getRootArray();
     $expr = $root->getObject()->getText();
     if (self::isTranslation($keys[0])) {
         $expr .= '->getTranslation(' . $keys[0] . ')';
     }
     $expr .= '->' . $root->getPropertyName() . '[' . $keys[1] . ']';
     /** @var \Pharborist\Types\StringNode|\Pharborist\Node $column */
     foreach (array_slice($keys, 2) as $column) {
         $expr .= '->';
         $expr .= $column instanceof StringNode ? $column->toValue() : $column->getText();
     }
     return Parser::parseExpression($expr);
 }