code: public static Pattern controlsMetabolicCatalysis(Blacklist blacklist, boolean consumption)
  	{
  		Pattern p = new Pattern(SequenceEntityReference.class, "controller ER");
  		p.add(linkedER(true), "controller ER", "controller generic ER");
  		p.add(erToPE(), "controller generic ER", "controller simple PE");
  		p.add(linkToComplex(), "controller simple PE", "controller PE");
  		p.add(peToControl(), "controller PE", "Control");
  		p.add(controlToConv(), "Control", "Conversion");
  		p.add(new NOT(participantER()), "Conversion", "controller ER");
  
  		p.add(new Participant(consumption ? RelType.INPUT : RelType.OUTPUT, blacklist, true),
  			"Control", "Conversion", "part PE");
  
  		p.add(linkToSimple(blacklist), "part PE", "part SM");
  		p.add(notGeneric(), "part SM");
  		p.add(type(SmallMolecule.class), "part SM");
  		p.add(peToER(), "part SM", "part SMR");
  
  		// The small molecule is associated only with left or right, but not both.
  		p.add(new XOR(
  			new MappedConst(new InterToPartER(InterToPartER.Direction.LEFT), 0, 1),
  			new MappedConst(new InterToPartER(InterToPartER.Direction.RIGHT), 0, 1)),
  			"Conversion", "part SMR");
  
  		return p;
  	}
docs: Pattern for a Protein controlling a reaction whose participant is a small molecule.
  
  @param blacklist a skip-list of ubiquitous molecules
  @param consumption true/false (TODO explain)
  @return the pattern