protected function getParameter($methodName, array $methodArguments)
    {
        $parameterClass = substr($methodName, 3);

        $fullParameterClass = $this->getFullParameterClass($parameterClass, $methodName);

        // Handle index arguments
        $parameterIndex = '';
        if (isset($methodArguments[0]) && is_numeric($methodArguments[0])) {
            $parameterIndex = $methodArguments[0];
        }

        // Handle compoundParametersCollections
        if (isset($this->compoundParametersCollections[$parameterClass . $parameterIndex])) {
            // If compoundParametersCollections contains our Objects, return them well-formatted
            return $this->compoundParametersCollections[$parameterClass . $parameterIndex]->getReadableItems();
        } else {
            $fullParameterCollectionClass = $fullParameterClass . 'Collection';

            // Test if the class Collection exist
            if (class_exists($fullParameterCollectionClass, false)) {
                return null;
            }
            // If not, it's a SingleParameter Object, continue the magic
        }

        /** @var SingleParameter $parameterObject */
        $parameterObject = new $fullParameterClass($parameterIndex);

        if (!array_key_exists($parameterObject->getName(), $this->singleParameters)) {
            return null;
        }

        $currentParameterObject = $this->singleParameters[$parameterObject->getName()];

        return $currentParameterObject->getValue();

    }