protected abstract Task WriteAsync( CodeWriter writer, TDescriptor descriptor);
public Task WriteAsync( CodeWriter writer, ICodeDescriptor descriptor) => WriteAsync(writer, (TDescriptor)descriptor);