to make it more flexible this shouldn't check for StartsWith, but rather we should have a `Func<string, bool>` that each directive implements as a decision whether or not it wants to participate in a given line processing. 

Since the author could then specify the condition himself, he doesn't have to use `#[directive]` only - perhaps i want to process all lines and replace some of the code syntax itself using regex or other matching techniques of my choice.

This way, like we said earlier, you have full freedom to rewrite the language bits :)