def stringifyUserArguments(args: T.List[T.Any], quote: bool=False) -> str:
    if isinstance(args, list):
        return ('[%s]' % ', '.join([stringifyUserArguments(x, True) for x in args]))
    elif isinstance(args, dict):
        return ('{%s}' % ', '.join(['{} : {}'.format(stringifyUserArguments(k, True), stringifyUserArguments(v, True)) for (k, v) in args.items()]))
    elif isinstance(args, bool):
        return ('true' if args else 'false')
    elif isinstance(args, int):
        return str(args)
    elif isinstance(args, str):
        return (f"'{args}'" if quote else args)
    raise InvalidArguments('Function accepts only strings, integers, bools, lists, dictionaries and lists thereof.')
def stringifyUserArguments(args: T.List[T.Any], quote: bool=False) -> str:
    if isinstance(args, list):
        return ('[%s]' % ', '.join([stringifyUserArguments(x, True) for x in args]))
    elif isinstance(args, dict):
        return ('{%s}' % ', '.join(['{} : {}'.format(stringifyUserArguments(k, True), stringifyUserArguments(v, True)) for (k, v) in args.items()]))
    elif isinstance(args, bool):
        return ('true' if args else 'false')
    elif isinstance(args, int):
        return str(args)
    elif isinstance(args, str):
        return (f"'{args}'" if quote else args)
    raise InvalidArguments('Function accepts only strings, integers, bools, lists, dictionaries and lists thereof.')