code: func DefaultSettings(setts ...Settings) *Settings {
  	if len(setts) == 0 {
  		iotaAPI, _ := api.ComposeAPI(api.HTTPClientSettings{})
  		return &Settings{
  			MWM:                 14,
  			Depth:               3,
  			SeedProv:            NewInMemorySeedProvider(emptySeed),
  			SecurityLevel:       consts.SecurityLevelMedium,
  			TimeSource:          &timesrc.SystemClock{},
  			EventMachine:        &event.DiscardEventMachine{},
  			API:                 iotaAPI,
  			Store:               inmemory.NewInMemoryStore(),
  			InputSelectionStrat: DefaultInputSelection,
  		}
  	}
  	defaultValue := func(val uint64, should uint64) uint64 {
  		if val == 0 {
  			return should
  		}
  		return val
  	}
  	sett := setts[0]
  	if sett.SecurityLevel == 0 {
  		sett.SecurityLevel = consts.SecurityLevelMedium
  	}
  	sett.Depth = defaultValue(sett.Depth, 3)
  	sett.MWM = defaultValue(sett.MWM, 14)
  	if sett.TimeSource == nil {
  		sett.TimeSource = &timesrc.SystemClock{}
  	}
  	if sett.InputSelectionStrat == nil {
  		sett.InputSelectionStrat = DefaultInputSelection
  	}
  	if sett.API == nil {
  		iotaAPI, _ := api.ComposeAPI(api.HTTPClientSettings{})
  		sett.API = iotaAPI
  	}
  	if sett.Store == nil {
  		sett.Store = inmemory.NewInMemoryStore()
  	}
  	return &sett
  }
docs: // DefaultSettings returns Settings initialized with default values:
  // empty seed (81x "9" trytes), mwm: 14, depth: 3, security level: 2, no event machine,
  // system clock as the time source, default input sel. strat, in-memory store, iota-api pointing to localhost,
  // no transfer poller plugin, no promoter-reattacher plugin.