static StringDiff[] getLineDiffs(String s1, String s2, int minimumDiffSize) {
		if (s2.length() < minimumDiffSize) {
			return new StringDiff[] { StringDiff.allTextReplaced(s2) };
		}

		List<Line> aList = split(s1);
		List<Line> bList = split(s2);
		LineLcs lcs = new LineLcs(aList, bList);
		List<Line> commons = lcs.getLcs();
		if (commons.isEmpty()) {
			// no common text--complete replacement
			return new StringDiff[] { StringDiff.allTextReplaced(s2) };
		}

		int aIndex = 0;
		int bIndex = 0;
		int aLastIndex = 0;
		int bLastIndex = 0;
		List<StringDiff> results = new LinkedList<>();
		for (Line common : commons) {

			aIndex = indexOf(aList, common, aLastIndex);
			bIndex = indexOf(bList, common, bLastIndex);

			int aDelta = aIndex - aLastIndex;
			int bDelta = bIndex - bLastIndex;

			int aEnd = aIndex;
			int aStart = aEnd - aDelta;
			List<Line> aPrevious = aList.subList(aStart, aEnd);
			StringDiff delete = createDelete(aPrevious);
			if (delete != null) {
				results.add(delete);
			}

			int bEnd = bIndex;
			int bStart = bEnd - bDelta;
			List<Line> bPrevious = bList.subList(bStart, bEnd);
			StringDiff insert = createInsert(bPrevious, charOffset(aList, aIndex));
			if (insert != null) {
				results.add(insert);
			}

			// note: nothing is needed for the 'common' string, since we don't track unchanged text

			aLastIndex = aIndex + 1;
			bLastIndex = bIndex + 1;
		}

		// grab remainder
		StringDiff trailingDeleted = createDeleteAtEnd(aList, aLastIndex, aList.size());
		if (trailingDeleted != null) {
			results.add(trailingDeleted);
		}

		StringDiff trailingInserted =
			createInsertAtEnd(bList, bLastIndex, bList.size(), s1.length());
		if (trailingInserted != null) {
			results.add(trailingInserted);
		}

		return results.toArray(new StringDiff[results.size()]);
	}
Returns the list of StringDiff objects that if applied to s1 would result in s2;  The
given text will look only for whole lines using '\n'.

@param s1 the original string
@param s2 the result string
       this value, then a completely different string will be returned
@return an array of StringDiff objects that change s1 into s2;
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/code/StringDiffUtils.java