Some words of explanation about the `set`/`unset`/`isSet` methods: The SBML specifications define certain attributes on some classes of objects as being optional. This requires an application to be careful about the distinction between two cases when reading a model: (1) a given attribute has never been set to a value, and therefore should be assumed to have the SBML-defined default value if one exists, and (2) a given attribute has been set to a value, but the value happens to be an empty string. The situation can be ambiguous when reading a model from a file or data stream and then examining the data objects that libSBML constructs as a result. LibSBML supports these distinctions by providing methods to set, unset, and query the status of attributes that are optional. The methods have names of the form `set`Attribute`(...)`, `unset`Attribute`()`, and `isSet`Attribute`()`, where Attribute is the the name of the optional attribute in question.