int ?=?( int*, int );
forall(dtype DT) DT* 	   	?=?( DT *          *,            DT* );

void a()
{
  forall( type T ) void f( T );
  void g( forall( type U ) void p( U ) );
  g( f );
}

void g()
{
  void h( int *null );
  forall( type T ) T id( T );
  forall( dtype T ) T *0;
  int 0;
  h( id( id( id( 0 ) ) ) );
}
