protected function parseArguments(string $text, string $defaultArgument, array $defaultValues = []): array {
    try {
      if (is_array($json = Json::decode($text))) return ArrayHelper::merge($defaultValues, $json);
      throw new InvalidArgumentException('The JSON string has an invalid format.');
    }

    catch (InvalidArgumentException $e) {
      $defaultValues[$defaultArgument] = $text;
      return $defaultValues;
    }
  }