- [ ] Catch exceptions and return to caller as errors
- [ ] Execute generators in parallel using same concurrent policy as analyzers (P2)
- [ ] `AddCompilationUnit`
- [ ] Create `GeneratedSource` directory (on demand) in `$OutputPath`
- [ ] Create separate directories for each generator (on demand), using generator assembly file name. e.g.: `$OutputPath/GeneratedSource/MyGenerator.dll/MySource.cs`
- [ ] `AddCompilation` should take `SourceText` and `ParseOptions` rather than `SyntaxTree`: ```AddCompilation(string name, SourceText text, ParseOptions options)```
- [ ] Add `IsGenerated` property to `SyntaxTree`. See `DocumentInfo.IsGenerated` and ```AnalyzerDriver.IsGeneratedCode(SyntaxTree tree)```.
- [ ] Incremental parsing when adding/removing `replace`. See `src/Compilers/CSharp/Test/Syntax/IncrementalParsing/ReplaceOriginalTests.cs`
- [ ] Match signature on replace/original
- [ ] Compare parameter names
- [ ] Compare default values
- [ ] Compare type parameter names and constraints
- [ ] Inherit type parameter constraints from original definition if absent in `replace`