# JAVA check that automatic conversion is workable
[hear] (define test1 (COS_JavaTest new));

       # Note that the names of methods include type information.
       # This could easily be removed, but is retained so that overloading
       # is possible in the Java code.
       # I is integer, V is void. The last type in the name is the return type.
[hear] (= (test1 mult-I-I-I 15 10) 150);

       # The type information can be safely omitted if there is no ambiguity
[hear] (= (test1 mult 15 10) 150);

[hear] (= (test1 addmult-I-I-I-I 4 15 10) 154);

[hear] (begin
         (test1 set-I-V 87)
         (= (test1 get-I) 87));

[hear] (= (test1 fact-I-I 0) 1);

[hear] (= (test1 fact-I-I 1) 1);

[hear] (= (test1 fact-I-I 5) 120);

       # Yay! testing says this works.
       # So structure for bytecode interpretation is in place.
       # Very few opcodes actually implemented yet though.