Borrowing the notation from C++
[15], constructors are messages with the same name as the interface,
and they create new objects.
For simplicity, we restrict the parameters to constructors to be of basic types.
Each constructor returns a (handle to a) unique new object that is different from all other objects in the system. A new object is assumed to exist only if the constructor terminates normally, i.e., without raising any exception. The abnormal clause of a specification for a constructor cannot enable, disable or change the interpretation of any message. All the other components can be specified just like any other message.
Predicates and return values in the above are specified using the usual arithmetic, relational and logical operators. In addition, there are special IBDL operators on sequences. We define these below.