* Creates instance of immutable empty attribute bag with given exception as reason for bag being empty (no attribute value), e.g. error occurred during evaluation
* Creates instance of immutable empty attribute bag containing val and only val value with given exception as reason for bag being empty (no attribute value), e.g. error occurred during
* evaluation,
*
* @param causeForEmpty
* reason for empty bag (optional but should be specified whenever possible, to help troubleshoot)
* @param elementDatatype
* bag element datatype
* @param causeForEmpty
* reason for empty bag (optional but should be specified whenever possible, to help troubleshoot)
* @param attributeValueSource
* attribute value source
* @return bag
* @throws IllegalArgumentException
* if {@code elementDatatype == null}
* if {@code val == null || elementDatatype == null}
* Creates instance of immutable empty attribute bag with given exception as reason for bag being empty (no attribute value), with {@value AttributeSources#REQUEST} as attribute source
*
* @param causeForEmpty
* reason for empty bag (optional but should be specified whenever possible, to help troubleshoot)
* if {@code elementDatatype == null } or {@code values} has at least one element which is null: {@code values != null && !values.isEmpty() && values.iterator().next() == null}