There are two kinds of methods: procedures are methods which upon call deliver a result or change the state of the computation. Streams are methods for sequentially accessing the elements of data structures, e.g. arrays or trees, in an order defined by the stream. To this end a call establishes a stream object carrying the state information for the stream. Thus, a stream object consists of a bound stream method and its state. The stream object may be explicitly established and assigned to a local entity, or it may be implicitly established during the first call of the stream. The latter is then called a direct (stream) call (cf. 6.7.2)
The reference of an object is a value created upon creation of the object. In general, it can be copied, assigned and compared with other values. An object is a value object if its references do not permit these operations.
For reference objects the basic operations assignment and comparison mean the assignment of (a copy of) the object reference and the comparison of such references respectively. For value objects assignment means moving a copy of the current value (state) of the object into the container representing the variable. Comparison of simple value objects yields true iff they have the same type and the same value; composite value objects are compared element by element.
Especially, all simple values are value objects with one unnamed attribute denoting its value and operations applicable to this value. An integer number such as 17 is a denotation for a (constant) object and at the same time denotes the sole attribute of this object.