func init if(linked("StringBuilder")) // add using module sys.add_use('System.Text') // defines an instance of StringBuilder this.setfield('sb', d("StringBuilder")) // initialize properties if(linked("onError")) this.setfield('ex', 'ex' + this.id) end if(linked("doRemove") and (linked("Result") or linked("ToString"))) sys.add_var(this.name, 'StringBuilder') end end end func make_remove(data) return(this.sb && '.Remove(' && d("Index") && ', ' && d("Length") && ')') end func doRemove(data) if(linked("StringBuilder")) linked("onError") ? blk.println('try {').inc() : '' if(linked("Result") or linked("ToString")) blk.println(this.codename, ' = ', make_remove(data), ';') event("onResult", this.codename) else event("onResult", make_remove(data)) end if(linked("onError")) blk.dec().println('} catch(ArgumentOutOfRangeException ', this.ex, ') {').inc() event("onError", this.ex + '.Message') blk.dec().println('}') end end end func Result if(linked("StringBuilder")) if(linked("doRemove")) return(this.codename) else return(make_remove()) end end end func ToString if(linked("StringBuilder")) if(linked("doRemove")) return(this.codename + '.ToString()') else return(make_remove() && '.ToString()') end end end