protected function defineArgumentProviders($argumentSetup, $argument)
    {
        if (! array_key_exists('mappings', $argumentSetup)) {
            throw new InvalidMappingsException(
                sprintf(
                    _('Failed to define argument providers for argument "%1$s". '
                      . 'Reason: The key "mappings" was not found.'),
                    $argument
                )
            );
        }

        array_walk(
            $argumentSetup['mappings'],
            [$this, 'addArgumentDefinition'],
            [$argument, $argumentSetup['interface'] ?: null]
        );
    }