public function toString()
    {
        $arguments = $this->getIterator();
        $params = array();
        $optionals = array();
        foreach ($arguments as $argument) {
            if ($argument->isOptional()) {
                $optionals[] = $argument->toString();
            } else {
                $params[] = $argument->toString();
            }
        }

        return implode(', ', array_merge($params, $optionals));
    }