int x;
typedef double y;
typedef float t;
y z;
type u = struct { int a; double b; };
int f( int y );
y q;

y w(y y, u v) {
  type x | { x t(u); };
  u u = y;
  x z = t(u);
}

y p;

context has_u( type z )
{
  z u(z);
};

forall( type t | has_u( t ) )
y q( t the_t )
{
  t y = u( the_t );
}

t f( y p ) {
  int y;
  typedef char x;

  {
    x y;
    typedef x z;

    {
      z x;
      typedef z y;
      y z = x;
    }

    z x = y;
  }

  x q = y;
}

t g( void ) {
  typedef char x;
  try {
    some_func();
  } catch ( x x ) {
    t y = x;
  }
  x z;
}

y q(i)
    int i;
{
  switch (i) {
    y q = i;
  case 0:
    return q;
  default:
    return i;
  }
}

