/**
  * {@inheritdoc}
  */
 public function encodeArguments(array $arguments, $flags = null)
 {
     $values = array();
     $flags = Flags::remove(Flags::CLOSE_STATEMENT, $flags);
     foreach ($arguments as $value) {
         if (ValueHelper::isScalar($value) || $value instanceof \JsonSerializable) {
             $values[] = $this->chain->first('encodeScalar', [$value, $flags]);
             continue;
         }
         $ref = $this->chain->first('encodeReference', [$value]);
         if ($ref) {
             $values[] = $ref;
         } else {
             $values[] = $this->chain->first('encodeValue', [$value, $flags]);
         }
     }
     return implode(', ', $values);
 }
 /**
  * {@inheritdoc}
  */
 public function encodeValue($value, $flags = null)
 {
     return ValueHelper::routeEncodeValue($this, $value, $flags);
 }