new Invoke("+java.util.concurrent.locks.ReadWriteLock", "readLock", "()Ljava/lang/util/concurrent/Lock;", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.concurrent.locks.ReadWriteLock", "writeLock", "()Ljava/lang/util/concurrent/Lock;", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.concurrent.Semaphore", "tryAcquire", "(JLjava/lang/util/concurrent/TimeUnit;)Z", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.concurrent.Semaphore", "tryAcquire", "()Z", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.concurrent.locks.Lock", "tryLock", "(JLjava/lang/util/concurrent/TimeUnit;)Z", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.concurrent.locks.Lock", "tryLock", "()Z", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.Queue", "offer", "(Ljava/lang/Object;)Z", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.concurrent.BlockingQueue", "offer", "(Ljava/lang/Object;JLjava/lang/util/concurrent/TimeUnit;)Z", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.concurrent.BlockingQueue", "poll", "(JLjava/lang/util/concurrent/TimeUnit;)Ljava/lang/Object;", Invoke.INSTANCE, bugReporter), new Invoke("+java.util.Queue", "poll", "()Ljava/lang/Object;", Invoke.INSTANCE, bugReporter),
	public BCPMethodReturnCheck(BugReporter bugReporter) {		this.bugReporter = bugReporter;		// The ByteCodePattern which specifies the kind of code pattern		// we're looking for.  We want to match the invocation of certain methods		// followed by a POP or POP2 instruction.		this.pattern = new ByteCodePattern()			.add(new MatchAny(new PatternElement[] {				/*				new Invoke("java.lang.String", "/.*", 					"/\\(.*\\)Ljava\\.lang\\.String;", 					Invoke.INSTANCE, bugReporter),				*/				new Invoke("java.lang.String", "/.*", 					"/\\(.*\\)Ljava/lang/String;", 					Invoke.INSTANCE, bugReporter),				new Invoke("java.lang.StringBuffer", "toString", 					"()Ljava/lang/String;", 					Invoke.INSTANCE, 					bugReporter),				new Invoke("+java.lang.Thread", "<init>", 					"/.*", 					Invoke.CONSTRUCTOR, 					bugReporter),				/*				new Invoke("java.lang.Thread", "currentThread", 					"()Ljava/lang/Thread;", 					Invoke.STATIC, 					bugReporter),				*/				new Invoke("java.security.MessageDigest", 					"digest", "([B)[B", 					Invoke.INSTANCE, bugReporter),				new Invoke("+java.net.InetAddress", "/.*", "/.*", 					Invoke.INSTANCE, bugReporter),				new Invoke("java.math.BigDecimal", "/.*", "/.*", 					Invoke.INSTANCE, bugReporter),				new Invoke("java.math.BigInteger", "/.*", "/.*", 					Invoke.INSTANCE, bugReporter),				new Invoke("java.io.File", "createNewFile", "()Z", Invoke.INSTANCE, bugReporter),			}).label("call").setAllowTrailingEdges(false))			.add(new MatchAny(new PatternElement[] {new Opcode(Constants.POP), new Opcode(Constants.POP2)}));	}