'Create a new Parameter of the appropriate type.'

def __new__(cls, name, schema, value=None):

    if (cls is not Parameter):
        return super(Parameter, cls).__new__(cls)
    if (not isinstance(schema, Schema)):
        schema = Schema.from_dict(name, schema)
    if (schema.type == schema.STRING):
        ParamClass = StringParam
    elif (schema.type == schema.NUMBER):
        ParamClass = NumberParam
    elif (schema.type == schema.LIST):
        ParamClass = CommaDelimitedListParam
    elif (schema.type == schema.MAP):
        ParamClass = JsonParam
    elif (schema.type == schema.BOOLEAN):
        ParamClass = BooleanParam
    else:
        raise ValueError((_('Invalid    Parameter    type    "%s"') % schema.type))
    return super(Parameter, cls).__new__(ParamClass)
