public static AbsoluteCrosspath FromString(String path, AbsoluteCrosspath workingDir)
        {
            Crosspath xpath = Crosspath.FromString(path);

            if (!(xpath is AbsoluteCrosspath))
            {
                return(((RelativeCrosspath)xpath).Absolutized(workingDir));
            }
            return(xpath as AbsoluteCrosspath);
        }
        /// <summary>
        /// Creates RelativeCrosspath from string.
        /// If string does not contain a relative path, then throw an exception.
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public new static RelativeCrosspath FromString(String path)
        {
            Crosspath xpath = Crosspath.FromString(path);

            if (!(xpath is RelativeCrosspath))
            {
                throw new CrosspathLibException("the path provided is not relative");
            }
            return(xpath as RelativeCrosspath);
        }
        /// <summary>
        /// Creates AbsoluteCrosspath from string.
        /// If string does not contain an absolute path, then throw an exception.
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public new static AbsoluteCrosspath FromString(String path)
        {
            Crosspath xpath = Crosspath.FromString(path);

            if (!(xpath is AbsoluteCrosspath))
            {
                throw new CrosspathLibException("the path provided is not absolute");
            }
            return(xpath as AbsoluteCrosspath);
        }