The types list is just passed as a property here in the `renderer.draw_line` call. The renderer can then decide how it wants to handle the line. If you think this will be too cryptic for future renderer developers, we could pass booleans like `has_markers` or `has_lines` (bad example, but you see what I mean).