code: func NewFileWriterOutput(path string) (*FileWriterOutput, error) {
  	fo := &FileWriterOutput{path: path}
  	fh, err := fo.openFile()
  	if err != nil {
  		return nil, err
  	}
  	fo.WriterOutput = NewWriterOutput(fh)
  	return fo, nil
  }
docs: // Creates a new FileWriterOutput object. This is the only case where an
  // error opening the file will be reported to the caller; if we try to
  // reopen it later and the reopen fails, we'll just keep trying until it
  // works.