 /// Private function that normalizes and returns an absolute string.  Asserts
 /// that `string` starts with a path separator.
 ///
-/// The path string will be normalized by:
-/// - Collapsing `..` path components
-/// - Removing `.` path components
-/// - Removing any trailing path separator
-/// - Removing any redundant path separators
-///
-/// This string manipulation may change the meaning of a path if any of the
-/// path components are symbolic links on disk.  However, the file system is
-/// never accessed in any way as part of the normalization.
+/// The normalization rules are as described for the AbsolutePath struct.
 private func normalize(absolute string: String) -> String {
     // FIXME: We will also need to support a leading `~` for a home directory.
     precondition(string.characters.first == pathSeparatorCharacter)

/// a `/` character, and holds a normalized string representation.  As with
/// AbsolutePath, the normalization is strictly syntactic, and does not access
/// the file system in any way.
public struct RelativePath {
    /// Private implementation details, shared with the AbsolutePath struct.
    private let _impl: PathImpl

    /// Initializes the RelativePath from `str`, which must be a relative path
    /// (which means that it must not begin with a path separator or a tilde).
    /// An empty input path is allowed, but will be normalized to a single `.`
    /// character.  The input string will be normalized if needed, as described
    /// in the documentation for RelativePath.
    public init(_ string: String) {
        // Normalize the relative string and store it as our PathImpl.
        _impl = PathImpl(string: normalize(relative: string))
