1. A non-transitory computer-readable storage medium comprising computer-readable instructions stored thereon that, when executed, are configured to cause a processor to at least: receive a first class, the first class indirectly implementing a first interface, wherein the first class extends a second class that directly implements the first interface; identify one or more directly implemented methods within the first class; determine a method signature for one or more of the directly implemented methods, each method signature including a method name and one or more method parameters for a method; estimate that the first class indirectly implements the first interface based on the method signatures for the one or more directly implemented methods; including: compare the method signature for each of the one or more directly implemented methods to the method signatures of the interface methods; and identify one or more of the directly implemented methods having a method signature that matches one of the interface method signatures; and instrument the first class based on the estimating that the first class indirectly implements the first interface.