def _ars_to_proxies(ars):
if (isinstance(ars, Remote) or<EOL>isinstance(ars, numbers.Number) or<EOL>ars is None):<EOL><INDENT>return ars<EOL><DEDENT>elif isinstance(ars, collections.Sequence):<EOL><INDENT>res = []<EOL>for i in range(len(ars)):<EOL><INDENT>res.append(_ars_to_proxies(ars[i]))<EOL><DEDENT>return res<EOL><DEDENT>elif isinstance(ars, ipyparallel.AsyncResult):<EOL><INDENT>ref = ars.r<EOL>ObClass = ref.type<EOL>if ObClass in distob.engine.proxy_types:<EOL><INDENT>RemoteClass = distob.engine.proxy_types[ObClass]<EOL><DEDENT>else:<EOL><INDENT>RemoteClass = type(<EOL>'<STR_LIT>' + ObClass.__name__, (Remote, ObClass), dict())<EOL>RemoteClass = proxy_methods(ObClass)(RemoteClass)<EOL><DEDENT>proxy_obj = RemoteClass(ref)<EOL>return proxy_obj<EOL><DEDENT>else:<EOL><INDENT>raise DistobTypeError('<STR_LIT>' % type(ars))<EOL><DEDENT>
wait for async results and return proxy objects
    Args: 
      ars: AsyncResult (or sequence of AsyncResults), each result type ``Ref``.
    Returns:
      Remote* proxy object (or list of them)