At model time, messages are modelled as classes, with attributes as parameters or return values. Each message class designates a specific request from the requestor. In this sense, the type of request is statically bound to a class; a message at run-time is an instance of the class. As the type of a message is a class, different types form generalization hierarchies [AILKC+00]. The run-time environment requires a mechanism to dynamically look up the hierarchy to match a message with behavior, because the behavior of the receiver is not statically bound to the class.
Parameters and return values of a request or a reply are stored in an instance of the message class. Sometimes a request does not need any parameter or an invocation does not return any value (asynchronous requests described below are an example), but the message instance must be sent or received. As mentioned above, the classifier is an inherent property of an object, the receiver may use the classifier as a parameter, even if the object contains no extra information. In this case, a dynamic lookup in the class hierarchy is necessary.