OVERLOAD FUNCTION Foo(X : INTEGER) RETURNS DEFAULT REAL RETURN 2.5 ENDFUNCTION OVERLOAD FUNCTION Foo(X : INTEGER) RETURNS INTEGER RETURN 3 ENDFUNCTION OVERLOAD FUNCTION Foo(X : REAL) RETURNS DEFAULT INTEGER RETURN 4 ENDFUNCTION OVERLOAD FUNCTION Foo(X : REAL) RETURNS REAL RETURN 5.5 ENDFUNCTION CLASS Box Value : INTEGER OVERLOAD FUNCTION Get() RETURNS DEFAULT REAL RETURN 6.5 ENDFUNCTION OVERLOAD FUNCTION Get() RETURNS INTEGER RETURN 7 ENDFUNCTION OVERLOAD FUNCTION OPERATOR+(Other : Box) RETURNS DEFAULT REAL RETURN 8.5 ENDFUNCTION OVERLOAD FUNCTION OPERATOR+(Other : Box) RETURNS INTEGER RETURN 9 ENDFUNCTION ENDCLASS OVERLOAD FUNCTION OPERATOR-(X : Box) RETURNS DEFAULT REAL RETURN 10.5 ENDFUNCTION OVERLOAD FUNCTION OPERATOR-(X : Box) RETURNS INTEGER RETURN 11 ENDFUNCTION OVERLOAD FUNCTION Consume(X : REAL) RETURNS INTEGER RETURN 12 ENDFUNCTION DECLARE B : Box DECLARE N : INTEGER OUTPUT Foo(1) OUTPUT Foo(1.0) N <- Foo(1) OUTPUT N OUTPUT (INTEGER)Foo(1) OUTPUT (C_INT)Foo(1) OUTPUT B.Get() N <- B.Get() OUTPUT N OUTPUT B + B N <- B + B OUTPUT N OUTPUT -B N <- -B OUTPUT N OUTPUT Consume(Foo(1))