} else if (Repository.instanceOf(className, "java.io.Reader")) { boolean isByteArray = Repository.instanceOf(className, "java.io.StringReader") || Repository.instanceOf(className, "java.io.CharArrayReader"); return new Stream(new Location(handle, basicBlock), className, "java.io.Reader", isByteArray);  } else if (Repository.instanceOf(className, "java.io.Writer")) { boolean isByteArray = Repository.instanceOf(className, "java.io.StringWriter") || Repository.instanceOf(className, "java.io.CharArrayWriter"); return new Stream(new Location(handle, basicBlock), className, "java.io.Writer", isByteArray);
		public Stream isResourceCreation(BasicBlock basicBlock, InstructionHandle handle, ConstantPoolGen cpg) {			Instruction ins = handle.getInstruction();			if (!(ins instanceof NEW))				return null;			NEW newIns = (NEW) ins;			Type type = newIns.getType(cpg);			String sig = type.getSignature();			if (!sig.startsWith("L") || !sig.endsWith(";"))				return null;			// Track any subclass of InputStream or OutputStream			// (but not ByteArray variants)			String className = sig.substring(1, sig.length() - 1).replace('/', '.');			try {				if (Repository.instanceOf(className, "java.io.InputStream")) {					boolean isByteArray = Repository.instanceOf(className, "java.io.ByteArrayInputStream");					return new Stream(new Location(handle, basicBlock), className, "java.io.InputStream", isByteArray);				} else if (Repository.instanceOf(className, "java.io.OutputStream")) {					boolean isByteArray = Repository.instanceOf(className, "java.io.ByteArrayOutputStream");					return new Stream(new Location(handle, basicBlock), className, "java.io.OutputStream", isByteArray);				} else					return null;								} catch (ClassNotFoundException e) {				lookupFailureCallback.reportMissingClass(e);				return null;			}		}