code: func (e *StructErrors) Flatten() map[string]*FieldError {
  
  	if e == nil {
  		return nil
  	}
  
  	errs := map[string]*FieldError{}
  
  	for _, f := range e.Errors {
  
  		if flat := f.Flatten(); flat != nil && len(flat) > 0 {
  
  			for k, fe := range flat {
  
  				if f.IsPlaceholderErr {
  					errs[f.Field+k] = fe
  				} else {
  					errs[k] = fe
  				}
  			}
  		}
  	}
  
  	for key, val := range e.StructErrors {
  
  		otherErrs := val.Flatten()
  
  		for _, f2 := range otherErrs {
  
  			f2.Field = fmt.Sprintf("%s.%s", key, f2.Field)
  			errs[f2.Field] = f2
  		}
  	}
  
  	return errs
  }
docs: // Flatten flattens the StructErrors hierarchical structure into a flat namespace style field name
  // for those that want/need it