protocol EncodableWithConfiguration
associatedtype EncodingConfiguration
func encode(to: Encoder, configuration: Self.EncodingConfiguration) throws