1. A method of traversing a representation of an application source code, comprising: specifying a plurality of runtime binding rules, each runtime binding rule of the plurality of runtime binding rules configured to augment the representation of the application source code using code slicing techniques, each runtime binding rule of the plurality of runtime binding rules associated with one or more locations within the representation of the application source code, at least one runtime binding rule of the plurality of runtime binding rules associated with a method invocation and a concrete implementation and specifying that the concrete implementation be visited either before or after the method invocation, the concrete implementation is visited before the method invocation when a first location of the one or more locations is before the method innovation and the concrete implementation is visited after the method invocation when a second location of the one or more locations is after the method innovation; beginning to traverse, using one or more computer processors, the representation of the application source code; monitoring a history of the traverse; continuing to traverse the representation of the application source code based at least in part on the history of the traverse, wherein continuing to traverse the representation of the application source code includes: a) identifying a plurality of concrete implementations of a method invocation; b) selecting, based at least in part on the history of the traverse, a set of concrete implementations from the plurality of concrete implementations of the method invocation; c) traversing, based at least in part on the one or more of the plurality of runtime binding rules, one or more concrete implementations of the set of concrete implementations; and d) updating the history of the traverse; and providing a set of identified vulnerabilities, the set of identified vulnerabilities based at least in part on the history of the traverse.