docs: protected void initialize(Collection<MatchingDefinition> definitionList, boolean moreSpaceForSpeed){
  		// 把所有正则表达式union起来
  		List<Automaton> list = new ArrayList<Automaton>(definitionList.size());
  		for (MatchingDefinition c: definitionList) {
  			Automaton a = new RegExp(c.getRegularExpression()).toAutomaton();
  			list.add(a);
  		}
  		Automaton a = BasicOperations.union(list);
  		runAutomaton = new RunAutomaton(a, moreSpaceForSpeed);
  		
  		// 利用精确匹配示范字符串，找到对应的state，并将附件对象与之关联
  		attachments = new Object[runAutomaton.getSize()];
  		for (MatchingDefinition c: definitionList) {
  			String exampleString = c.getExactMatchExample();
  			if (exampleString != null){
  				setAttachmentByExample(exampleString, c.getAttachment(), c.getRegularExpression());
  			}
  			List<String> exampleList = c.getExactMatchExamples();
  			if (exampleList != null){
  				for (String example: exampleList){
  					setAttachmentByExample(example, c.getAttachment(), c.getRegularExpression());
  				}
  			}
  		}
  		
  		/*
  		// 检查是否每个状态都有覆盖
  		for (int i = 0; i < runAutomaton.getSize(); i ++){
  			if (runAutomaton.isAccept(i) && attachments[i] != null){
  				// it is okay
  			}else{
  				// not covered
  				System.out.println(i);
  				
  				//throw new IllegalArgumentException("State " + i + " can be accepted but has no attachment. " 
  				//		+ "Please check if all states can be covered by example strings provided.");
  				
  			}
  		}
  		*/
  	}