func (c *Compiler) Done() (err error) {
	defer func() { c.w = nil }()
	if err = c.flush(); err != nil {
		return
	}

	return c.write(eof) // logical EOF marker
}
// Done marks the logical EOF of the compiled RRs block.
// After calling Done the Compiler is no more usable and will panic on attempts
// to use it. If the io.Writer passed to NewCompiler is an bufio.Writer then
// the user of Compiler is responsible for calling Writer.Flush and possibly Writer.Close
// after calling Compiler.Done.
// The semantics of Done are like os.File.Close except that no io.Writer closing
// is performed and the closed entity is the Compiler per se.
//
// Warning: Failure to invoke Done as a last task of a compilation causes loss and/or
// corruption of the produced binary data.
Done marks the logical EOF of the compiled RRs block.
After calling Done the Compiler is no more usable and will panic on attempts
to use it. If the io.Writer passed to NewCompiler is an bufio.Writer then
the user of Compiler is responsible for calling Writer.Flush and possibly Writer.Close
after calling Compiler.Done.
The semantics of Done are like os.File.Close except that no io.Writer closing
is performed and the closed entity is the Compiler per se.

Failure to invoke Done as a last task of a compilation causes loss and/or
corruption of the produced binary data.
// Done marks the logical EOF of the compiled RRs block . // After calling Done the Compiler is no more usable and will panic on attempts // to use it . If the io . Writer passed to NewCompiler is an bufio . Writer then // the user of Compiler is responsible for calling Writer . Flush and possibly Writer . Close // after calling Compiler . Done . // The semantics of Done are like os . File . Close except that no io . Writer closing // is performed and the closed entity is the Compiler per se . // // Warning : Failure to invoke Done as a last task of a compilation causes loss and / or // corruption of the produced binary data .
func (c *Compiler) Done() (err error) {
	defer func() { c.w = nil }()
	if err = c.flush(); err != nil {
		return
	}
	return c.write(eof) 
}
func ( c * Compiler ) Done ( ) ( err error ) { defer func ( ) { c . w = nil } ( ) if err = c . flush ( ) ; err != nil { return } return c . write ( eof ) }
Done marks the logical EOF of the compiled RRs block.
Done marks the logical EOF of the compiled RRs block .
// logical EOF marker