@Override
	public Rectangle getCursorBounds(int row, int col) {

		if ((row < 0) || (row >= getNumRows())) {
			return null;
		}

		List<FieldRow> rows = getAllRows(row);
		FieldRow cursorRow = rows.get(rows.size() - 1);
		int relativeRow = cursorRow.getRelativeRow(row);
		Rectangle r = cursorRow.field.getCursorBounds(relativeRow, col);

		for (int i = 0; i < rows.size() - 1; i++) {
			FieldRow previousRow = rows.get(i);
			r.y += previousRow.field.getHeight();
		}
		return r;
	}
A {@link TextField} that takes in other TextFields.

<P>This class allows clients to create custom text layout behavior by combining individual
TextFields that dictate layout behavior.  As an example, consider this rendering:
<pre>
	1)  This is some text...
	2)	This
		is
		more
		text
</pre>
In this example, 1) is a row of text inside of a {@link ClippingTextField}.  Row 2) is a
multi-line text rendering specified in a single {@link FlowLayoutTextField}, using a
narrow width to trigger the field to place each element on its own line.
Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/field/CompositeVerticalLayoutTextField.java