func (s *ParamScanner) Scan(scan *Scan) error {
	s.scan = scan
	s.defsByName = map[string]*ScannedDef{}
	s.defsByType = map[string][]*ScannedDef{}
	for _, def := range scan.Defs {
		s.defsByName[def.Name] = def
		if !def.Def.NotForAutoFill {
			s.defsByType[def.ObjectTypeString] = append(s.defsByType[def.ObjectTypeString], def)
		}
	}
	for _, def := range scan.Defs {
		if err := s.scanParams(def); err != nil {
			return errors.New("could not scan parameters for definition " + def.Name + ": " + err.Error())
		}
	}
	return nil
}
Scan updates the given Scan with data about params.
package dingo
import (
	"errors"
	"fmt"
	"reflect"
	"strconv"
	"strings"
)
type ParamScanner struct {
	scan       *Scan
	defsByName map[string]*ScannedDef
	defsByType map[string][]*ScannedDef
}