// 51.ck : function overloading

fun void bar()
{
    <<<1>>>;
}

fun void bar( int i )
{
    <<<2>>>;
}

fun void bar( string s )
{
    <<<3>>>;
}


class X
{
    fun void foo()
    { <<<"X.foo()">>>; }

    fun void foo( int i )
    { <<<"X.foo(int)">>>; }

    fun void foo( int a, int b )
    { <<<"X.foo(int, int)">>>; }
}

class Y extends X
{
    fun void foo()
    { <<<"Y.foo()">>>; }

    fun void foo( int a, int b )
    { <<<"Y.foo(int, int)">>>; }
}

Y y;
y.foo();
y.foo( 1 );
y.foo( 1, 2 );

X x;
x.foo( 1, 2 );

bar();
bar(1);
bar("a");
