protected function compileArguments(Compiler $compiler, $withKeys = true)
 {
     $first = true;
     foreach ($this->getKeyValuePairs() as $pair) {
         if (!$first) {
             $compiler->raw(', ');
         }
         $first = false;
         if ($withKeys) {
             $compiler->compile($pair['key'])->raw(' => ');
         }
         $compiler->compile($pair['value']);
     }
 }
 public function compile(Compiler $compiler)
 {
     switch ($this->attributes['type']) {
         case self::PROPERTY_CALL:
             $compiler->compile($this->nodes['node'])->raw('->')->raw($this->nodes['attribute']->attributes['value']);
             break;
         case self::METHOD_CALL:
             $compiler->compile($this->nodes['node'])->raw('->')->raw($this->nodes['attribute']->attributes['value'])->raw('(')->compile($this->nodes['arguments'])->raw(')');
             break;
         case self::ARRAY_CALL:
             $compiler->compile($this->nodes['node'])->raw('[')->compile($this->nodes['attribute'])->raw(']');
             break;
     }
 }