'List the children of this path object.
@raise OSError: If an error occurs while listing the directory.  If the
error is \'serious\', meaning that the operation failed due to an access
violation, exhaustion of some kind of resource (file descriptors or
memory), OSError or a platform-specific variant will be raised.
@raise UnlistableError: If the inability to list the directory is due
to this path not existing or not being a directory, the more specific
OSError subclass L{UnlistableError} is raised instead.
@return: an iterable of all currently-existing children of this object.'

def children(self):

    try:
        subnames = self.listdir()
    except WindowsError as winErrObj:
        winerror = getattr(winErrObj, 'winerror', winErrObj.errno)
        if (winerror not in (ERROR_PATH_NOT_FOUND, ERROR_FILE_NOT_FOUND, ERROR_INVALID_NAME, ERROR_DIRECTORY)):
            raise
        raise _WindowsUnlistableError(winErrObj)
    except OSError as ose:
        if (ose.errno not in (errno.ENOENT, errno.ENOTDIR)):
            raise
        raise UnlistableError(ose)
    return [self.child(name) for name in subnames]
