code: public static Pattern controlsStateChangeBothControlAndPart()
  	{
  		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");
  
  		// the controller PE is also an input
  		p.add(new ParticipatesInConv(RelType.INPUT), "controller PE", "Conversion");
  
  		// same controller simple PE is also an output
  		p.add(linkToComplex(), "controller simple PE", "special output PE");
  		p.add(equal(false), "special output PE", "controller PE");
  		p.add(new ParticipatesInConv(RelType.OUTPUT), "special output PE", "Conversion");
  
  		stateChange(p, "Control");
  
  		// non-generic input and outputs are only associated with one side
  		p.add(equal(false), "input simple PE", "output simple PE");
  		p.add(new NOT(simplePEToConv(RelType.OUTPUT)), "input simple PE", "Conversion");
  		p.add(new NOT(simplePEToConv(RelType.INPUT)), "output simple PE", "Conversion");
  
  		p.add(equal(false), "controller ER", "changed ER");
  		p.add(type(SequenceEntityReference.class), "changed ER");
  
  		return p;
  	}
docs: Pattern for a EntityReference has a member PhysicalEntity that is controlling a state change
  reaction of another EntityReference. In this case the controller is also an input to the
  reaction. The affected protein is the one that is represented with different non-generic
  physical entities at left and right of the reaction.
  @return the pattern