private void initializeSparseColumnSet(Integer[] sparseColumns) throws UnsupportedFieldException {
		if (sparseColumns == null || sparseColumns.length == 0) {
			return;
		}
		Set<Integer> builder = new HashSet<>();
		for (int i : sparseColumns) {
			if (i < 0 || i > Byte.MAX_VALUE || i >= fields.length) {
				throw new UnsupportedFieldException("Sparse column entry out of range: " + i);
			}
			builder.add(i);
		}
		sparseColumnSet = Set.copyOf(builder);
		if (sparseColumnSet.size() != sparseColumns.length) {
			throw new UnsupportedFieldException("Sparse column set contains duplicate entry");
		}
		isVariableLength = true; // sparse records are variable length
	}
Initialize field types and related field extensions (e.g., sparse field list).
The presence of field extensions within the encodedFieldTypes is indicated by a
-1 (field extension indicator) following the encoded field types.  
The byte value following the field extension indicator
is the extension type which is followed by the extension data if applicable.
A -1 byte is used to separate each extension byte sequence.
@param encodedFieldTypes encoded field type data
@throws UnsupportedFieldException if decoding of the encodedFieldTypes fails
Ghidra/Framework/DB/src/main/java/db/Schema.java