if (acceptSubclass) {  try { if (!Repository.instanceOf(className, this.className)) return null; } catch (ClassNotFoundException e) { return null; } } else {  if (!this.className.equals(className)) return null; }   if (!methodNameRE.matcher(methodName).matches()) return null; if (!methodSigRE.matcher(methodSig).matches())
if (!classNameMatcher.match(className) || !methodNameMatcher.match(methodName) || !methodSigMatcher.match(methodSig))
	public MatchResult match(InstructionHandle handle, ConstantPoolGen cpg,		ValueNumberFrame before, ValueNumberFrame after, BindingSet bindingSet) throws DataflowAnalysisException {		// See if the instruction is an InvokeInstruction		Instruction ins = handle.getInstruction();		if (!(ins instanceof InvokeInstruction))			return null;		InvokeInstruction inv = (InvokeInstruction) ins;		// Check that it's static or non-static, as appropriate		boolean isStatic = inv.getOpcode() == Constants.INVOKESTATIC;		if (this.isStatic != isStatic)			return null;		// Check class name, method name, and method signature...		String className = inv.getClassName(cpg);		String methodName = inv.getMethodName(cpg);		String methodSig = inv.getSignature(cpg);		// Check class name		if (acceptSubclass) {			// See if the current invoked class is a subclass of the one we want			try {				if (!Repository.instanceOf(className, this.className))					return null;			} catch (ClassNotFoundException e) {				return null;			}		} else {			// Force exact class match			if (!this.className.equals(className))				return null;		}		// Check method name and signature		if (!methodNameRE.matcher(methodName).matches())			return null;		if (!methodSigRE.matcher(methodSig).matches())			return null;		// It's a match!		return new MatchResult(this, bindingSet);	}