func ParseSpringPropertyLinesSliceToSchema(groups [][]string) (map[string]*oas3.SchemaRef, error) {
	mss := map[string]*oas3.SchemaRef{}
	for _, group := range groups {
		name, prop, err := ParseSpringPropertyLinesToSchema(group)
		if err != nil {
			return mss, err
		} else if name == "" || prop == nil {
			continue
		}
		if prop != nil {
			mss[name] = oas3.NewSchemaRef("", prop)
		} else {
			mss[name] = oas3.NewSchemaRef(name, nil)
		}
	}
	return mss, nil
}
ParseSpringPropertyLinesSliceToSchema takes a set of string slices
and attempts to parse one property per set of lines.
noinspection ALL
package springopenapi3
import (
	"fmt"
	"regexp"
	"strconv"
	"strings"
	oas3 "github.com/getkin/kin-openapi/openapi3"
	"github.com/grokify/simplego/type/stringsutil"
	"github.com/grokify/spectrum/openapi3"
)
const (
	TypeArray            = openapi3.TypeArray
	TypeBoolean          = openapi3.TypeBoolean
	TypeInteger          = openapi3.TypeInteger
	TypeObject           = openapi3.TypeObject
	TypeString           = openapi3.TypeString
	FormatStringDate     = openapi3.FormatDate
	FormatStringDateTime = openapi3.FormatDateTime
	FormatIntegerInt64   = openapi3.FormatInt64
)
var (
	rxSpringLine             = regexp.MustCompile(`^(?:private\s+)?(\S+)\s+(\S+)\s*;\s*$`)
	rxSpringLineBoolDef      = regexp.MustCompile(`^private\s+[Bb]oolean\s+(\S+)\s+=\s+(true|false);\s*$`)
	rxSpringLineIntOrLongDef = regexp.MustCompile(`^private\s+(Integer|Long)\s+(\S+)\s+=\s+(\d+);\s*$`)
	rxSpringLineStringDef    = regexp.MustCompile(`^private\s+String\s+(\S+)\s+=\s+"(.*)"\s*;\s*$`)
	rxSpringLineIntArrayDef  = regexp.MustCompile(`^private\s+List<([^<>]+)>\s+(\S+)\b`)
)