get_attribute(X{Name:Attribute}, A) :-
-?->
A = Attribute.
This clause succeeds only when the first argument is an attributed variable,
and it binds
X to the whole attributed variable and A to the attribute
with name Name.
Note that a normal (unification) clause can not be used to decompose
an attributed variable (it would create a new attributed variable and unify this with the caller
argument, but the unification is handled by an attributed variable handler, see
Section 16.7).