     private var currentEncoder: _IndexReferencingEncoder {
         defer { encoder.array.append("") }
         return encoder.encoder(at: count)
-    }
-
-    private func box<T: Encodable>(_ value: T) throws {
-        if let strategy = encoder.options.encodingStrategies[T.self] {
-            try strategy.closure(value, currentEncoder)
-        } else {
-            encoder.array.append(value)
-        }
     }
 }
 

    // MARK: - Swift.KeyedEncodingContainerProtocol Methods

    var codingPath: [CodingKey] { return encoder.codingPath }
    func encodeNil(forKey key: Key)               throws { encoder.dictionary[key.stringValue] = NSNull() }
    func encode(_ value: Bool, forKey key: Key)   throws { try box(value, for: key) }
    func encode(_ value: Int, forKey key: Key)    throws { try box(value, for: key) }
    func encode(_ value: Int8, forKey key: Key)   throws { try box(value, for: key) }
    func encode(_ value: Int16, forKey key: Key)  throws { try box(value, for: key) }
    func encode(_ value: Int32, forKey key: Key)  throws { try box(value, for: key) }
    func encode(_ value: Int64, forKey key: Key)  throws { try box(value, for: key) }
    func encode(_ value: UInt, forKey key: Key)   throws { try box(value, for: key) }
    func encode(_ value: UInt8, forKey key: Key)  throws { try box(value, for: key) }
    func encode(_ value: UInt16, forKey key: Key) throws { try box(value, for: key) }
    func encode(_ value: UInt32, forKey key: Key) throws { try box(value, for: key) }
    func encode(_ value: UInt64, forKey key: Key) throws { try box(value, for: key) }
    func encode(_ value: Float, forKey key: Key)  throws { try box(value, for: key) }
    func encode(_ value: Double, forKey key: Key) throws { try box(value, for: key) }
    func encode(_ value: String, forKey key: Key) throws { try box(value, for: key) }
    func encode<T>(_ value: T, forKey key: Key)   throws where T: Encodable { try encoder(for: key).encode(value) }

    func nestedContainer<NestedKey>(keyedBy type: NestedKey.Type,

        return .init(referencing: self, at: index)
    }

    private var canEncodeNewValue: Bool {
        if let dictionary = object as? [String: Any], dictionary.isEmpty {
            return true
