             self.elements.append(element)
         }
         
-        /// Removes and returns the last element of the collection.
+        /// Removes and returns the last element of the object path.
         ///
-        /// - Precondition: The collection must not be empty.
+        /// - Precondition: The object path must not be empty.
         internal func removeLast() -> Element {
             
             // lazily rebuild string

        return IndexingIterator(_elements: self)
    }
    
    mutating func append(_ element: Element) {
        
        internalReference.mutatingReference.append(element)
    }
    
    /// Removes and returns the first element of the collection.
    ///
    /// - Precondition: The collection must not be empty.
    @discardableResult
    mutating func removeFirst() -> Element {
        
        return internalReference.mutatingReference.removeFirst()
    }
    
    /// Removes and returns the last element of the collection.
    ///
    /// - Precondition: The collection must not be empty.
    @discardableResult
    mutating func removeLast() -> Element {
        
        return internalReference.mutatingReference.removeLast()
    }

            return cache
        }
        
        /// Adds a new element at the end of the object path.
        ///
        /// Use this method to append a single element to the end of a mutable object path.
        internal func append(_ element: Element) {
            
            // lazily rebuild string
