There are two ways that a parser can become part of the data stream. One way is for the previous protocol to know that the parser exists and to "hand off" to it. The other is for the previous protocol to build a "follow set" of the possible protocols that could follow it. When a protocol parser is called in its recognize function, its return code indicates whether or not it recognizes its protocol in the raw data, and may indicate which protocol follows.