'Create and return a new L{FilePath} representing a path contained by
C{self}.
@param path: The base name of the new L{FilePath}.  If this contains
directory separators or parent references it will be rejected.
@type path: L{bytes} or L{unicode}
@raise InsecurePath: If the result of combining this path with C{path}
would result in a path which is not a direct child of this path.
@return: The child path.
@rtype: L{FilePath} with a mode equal to the type of C{path}.'

def child(self, path):

    colon = _coerceToFilesystemEncoding(path, ':')
    sep = _coerceToFilesystemEncoding(path, os.sep)
    ourPath = self._getPathAsSameTypeAs(path)
    if (platform.isWindows() and path.count(colon)):
        raise InsecurePath(('%r    contains    a    colon.' % (path,)))
    norm = normpath(path)
    if (sep in norm):
        raise InsecurePath(('%r    contains    one    or    more    directory    separators' % (path,)))
    newpath = abspath(joinpath(ourPath, norm))
    if (not newpath.startswith(ourPath)):
        raise InsecurePath(('%r    is    not    a    child    of    %s' % (newpath, ourPath)))
    return self.clonePath(newpath)
