func encode
@_specialize(where T == JSONEncoder) func encode<T : Encoder>(to encoder: T) throws { ... }