private byte[] getBytesAgainstFlow(int numBytes, Memory memory, Address start) {
		MemoryBlock currentBlock = memory.getBlock(start);

		if (currentBlock == null) {
			return null;  //there are no bytes immediately before the function
		}

		byte[] bytes = new byte[numBytes];
		Address pre = start.subtract(numBytes - 1);
		//don't want to extend into another section
		MemoryBlock preBlock = memory.getBlock(pre);
		if ((preBlock == null) || (currentBlock.compareTo(preBlock) != 0)) {
			bytes = null;
		}
		else {
			try {
				memory.getBytes(pre, bytes);
			}
			catch (MemoryAccessException e) {
				Msg.info(this, "MemoryAccessException for address" + pre.toString());
				bytes = null;
			}
		}
		return bytes;
	}
Creates a {@link FunctionBitPatternInfo} object consisting of information gathered
for a given {@link Function} using the specified {@link DataGatheringParams}
@param program {@link Program} containing the {@link Function}
@param func {@link Function} to gather data about
@param params parameters controlling how much data is gathered
Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/info/FunctionBitPatternInfo.java