WiringServiceTable wiringService = new WiringServiceTable();
wiringService.put(LogEnabled.class, this.log);
wiringService.put(DNSServiceEnabled.class, this.dnsProbe);
this.macroExpand = new MacroExpand(logger.getChildLogger("macroExpand"), this.dnsProbe);
wiringService.put(MacroExpandEnabled.class, this.macroExpand);
this.parser = new RFC4408SPF1Parser(logger.getChildLogger("parser"), new DefaultTermsFactory(logger.getChildLogger("termsfactory"), wiringService));
// We add this after the parser creation because services cannot be null
wiringService.put(SPFCheckEnabled.class, this);
this.executor = new SynchronousSPFExecutor(log, dnsProbe);
}