docs: private int[] getAllFlatKeys(String[] fieldExpressions) {
  
  		int[] allKeys = null;
  
  		for (String keyExp : fieldExpressions) {
  			Keys.ExpressionKeys<T> ek = new Keys.ExpressionKeys<>(keyExp, this.type);
  			int[] flatKeys = ek.computeLogicalKeyPositions();
  
  			if (allKeys == null) {
  				allKeys = flatKeys;
  			} else {
  				// check for duplicates
  				for (int key1 : flatKeys) {
  					for (int key2 : allKeys) {
  						if (key1 == key2) {
  							throw new InvalidProgramException("Duplicate fields in field expression " + keyExp);
  						}
  					}
  				}
  				// append flat keys
  				int oldLength = allKeys.length;
  				int newLength = oldLength + flatKeys.length;
  				allKeys = Arrays.copyOf(allKeys, newLength);
  				System.arraycopy(flatKeys, 0, allKeys, oldLength, flatKeys.length);
  			}
  		}
  
  		return allKeys;
  	}