<#+
public class DisposableBlock:IDisposable{
string _onDispose=null;
TextTransformation _tt;
public DisposableBlock(bool doWrite,Microsoft.VisualStudio.TextTemplating.TextTransformation tt, string onDispose,string start){
_tt=tt;
if(doWrite) {
_tt.PushIndent("\t");
_tt.WriteLine(start);
_onDispose=onDispose;
}
_tt.PushIndent("\t");
}
public void Dispose(){
if(_onDispose!=null){
_tt.PopIndent();
_tt.WriteLine( _onDispose);
}
_tt.PopIndent();
}
}
#>
PCMrCnB1YmxpYyBjbGFzcyBEaXNwb3NhYmxlQmxvY2s6SURpc3Bvc2FibGV7CiAgICBzdHJpbmcgX29uRGlzcG9zZT1udWxsOwoJVGV4dFRyYW5zZm9ybWF0aW9uIF90dDsKCXB1YmxpYyBEaXNwb3NhYmxlQmxvY2soYm9vbCBkb1dyaXRlLE1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uVGV4dFRlbXBsYXRpbmcuVGV4dFRyYW5zZm9ybWF0aW9uIHR0LCBzdHJpbmcgb25EaXNwb3NlLHN0cmluZyBzdGFydCl7CgkJCgkJX3R0PXR0OwoJCWlmKGRvV3JpdGUpIHsKCQkJX3R0LlB1c2hJbmRlbnQoIlx0Iik7CgkJCV90dC5Xcml0ZUxpbmUoc3RhcnQpOwoJCQlfb25EaXNwb3NlPW9uRGlzcG9zZTsKCQkJCiAgICAgICAgfQoJCV90dC5QdXNoSW5kZW50KCJcdCIpOwogICAgfQoKCXB1YmxpYyB2b2lkIERpc3Bvc2UoKXsKCgkJaWYoX29uRGlzcG9zZSE9bnVsbCl7CgkJCV90dC5Qb3BJbmRlbnQoKTsKCQkJX3R0LldyaXRlTGluZSggX29uRGlzcG9zZSk7CgkJCQogICAgICAgIH0KCQlfdHQuUG9wSW5kZW50KCk7CiAgICB9Cn0KIz4=