code: func NewCSVLineParser(fieldsString string, trimLeadingSpace bool) (*CSVLineParser, error) {
  	// Is building a reader for every single line a good idea?
  	// Potential for future optimization here
  	reader := strings.NewReader(fieldsString)
  	csvReader := csv.NewReader(reader)
  	csvReader.TrimLeadingSpace = trimLeadingSpace
  
  	fields, err := csvReader.Read()
  	if err != nil {
  		logrus.WithError(err).WithField("fields", fieldsString).
  			Error("unable to parse list of fields")
  		return nil, err
  	}
  	logrus.WithFields(logrus.Fields{
  		"fields": fields,
  	}).Debug("generated CSV fields")
  	return &CSVLineParser{
  		fields:           fields,
  		numFields:        len(fields),
  		trimLeadingSpace: trimLeadingSpace}, nil
  }
docs: // NewCSVLineParser factory