public ParameterizedContext(CommandInvocation invocation)
    {
        super(invocation);

        for (ParsedParameter parsed : invocation.valueFor(ParsedParameters.class))
        {
            Parameter parameter = parsed.getParameter();
            if (parameter == null) // empty parameter (last)
            {
                continue;
            }
            if (parameter.getParser() instanceof FlagParser)
            {
                flags.put(((FlagParser) parameter.getParser()).name(), parsed);
            }
            else
            {
                Integer pos = parameter.getProperty(Properties.FIXED_POSITION);
                if (parameter.getParser() instanceof NamedParser)
                {
                    nameBased.put(((NamedParser)parameter.getParser()).getNames()[0], parsed);
                }
                else if (pos != null)
                {
                    positional.put(pos, parsed);
                }
                else
                {
                    throw new IllegalArgumentException("Cannot assign parameter that is neither positional nor has fixed values");
                }
            }
        }
    }