public int justifiedContain(Address addr, int sz) {
		if (joinrec != null) {
			int res = 0;
			for (int i = joinrec.length - 1; i >= 0; --i) {	// Move from least significant to most
				Varnode vdata = joinrec[i];
				int cur = justifiedContainAddress(vdata.getAddress().getAddressSpace(),
					vdata.getOffset(), vdata.getSize(), addr.getAddressSpace(), addr.getOffset(),
					sz, false, ((flags & IS_BIG_ENDIAN) != 0));
				if (cur < 0) {
					res += vdata.getSize();			// We skipped this many less significant bytes
				}
				else {
					return res + cur;
				}
			}
			return -1;		// Not contained at all
		}
		if (alignment == 0) {		// Ordinary endian containment
			return justifiedContainAddress(spaceid, addressbase, size, addr.getAddressSpace(),
				addr.getOffset(), sz, ((flags & FORCE_LEFT_JUSTIFY) != 0),
				((flags & IS_BIG_ENDIAN) != 0));
		}
		if (spaceid != addr.getAddressSpace()) {
			return -1;
		}
		long startaddr = addr.getOffset();
		if (Long.compareUnsigned(startaddr, addressbase) < 0) {
			return -1;
		}
		long endaddr = startaddr + sz - 1;
		if (Long.compareUnsigned(endaddr, startaddr) < 0) {
			return -1;		// Don't allow wrap around
		}
		if (Long.compareUnsigned(addressbase + size - 1, endaddr) < 0) {
			return -1;
		}
		startaddr -= addressbase;
		endaddr -= addressbase;
		if (!isLeftJustified()) {		// For right justified (big endian), endaddr must be aligned
			int res = (int) ((endaddr + 1) % alignment);
			if (res == 0) {
				return 0;
			}
			return (alignment - res);
		}
		return (int) (startaddr % alignment);
	}
Does this ParamEntry intersect the given range in some way
@param addr is the starting address of the given range
@param sz is the number of bytes in the given range
@return true if there is an intersection
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/ParamEntry.java