type T | { T x( T ); };

T y( T t ) {
	T t_instance;
	return x( t );
}

forall( type T ) lvalue T *?( T * );
int ?++( int * );
int ?=?( int *, int );
forall( dtype DT ) DT * ?=?( DT **, DT * );

type U = int *;

U x( U u ) {
	U u_instance = u;
	(*u)++;
	return u;
}

int *break_abstraction( U u ) {
	return u;
}

// Local Variables: //
// tab-width: 4 //
// End: //
