1. A method of routing a message through a plurality of test methods including: receiving a message; applying a first test method to the message; updating a state of the message based on the first test method; and determining a second test method to be applied to the message based on the state.