 
         // MARK: - Encoder Features
         func testNestedContainerCodingPaths() {
-            let encoder = YAMLEncoder()
-            do {
-                _ = try encoder.encode(NestedContainersTestType())
-            } catch {
-                expectUnreachable("Caught error during encoding nested container types: \(error)")
-            }
+            _testRoundTrip(of: NestedContainersTestType())
         }
 
         func testSuperEncoderCodingPaths() {
-            let encoder = YAMLEncoder()
-            do {
-                _ = try encoder.encode(NestedContainersTestType(testSuperEncoder: true))
-            } catch {
-                expectUnreachable("Caught error during encoding nested container types: \(error)")
-            }
+            _testRoundTrip(of: NestedContainersTestType(testSuperCoder: true))
         }
 
         func testInterceptDecimal() {

            case two
        }

        func encode(to encoder: Encoder) throws {
            if self.testSuperEncoder {
                var topLevelContainer = encoder.container(keyedBy: TopLevelCodingKeys.self)
                expectEqualPaths(encoder.codingPath, [], "Top-level Encoder's codingPath changed.")
                expectEqualPaths(topLevelContainer.codingPath, [], "New first-level keyed container has non-empty codingPath.")


        }
    }

    struct NestedContainersTestType: Codable, Equatable {
        let testSuperCoder: Bool

        static func == (lhs: NestedContainersTestType, rhs: NestedContainersTestType) -> Bool {
            return lhs.testSuperCoder == rhs.testSuperCoder
        }

        init(testSuperCoder: Bool = false) {
            self.testSuperCoder = testSuperCoder
        }

        enum TopLevelCodingKeys: Int, CodingKey {
            case testSuperCoder
            case a
            case b
            case c
