/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
abstract class A
{
public void Testme(A other)
{
System.
out.
println("value from this: " + Value
() + " value from other: " + other.
Value()); }
abstract protected String Value
(); }
class B extends A
{
{
return "B class";
}
}
class C extends A
{
{
return "C class";
}
}
/* Name of the class has to be "Main" only if the class is public. */
class Program
{
{
B b = new B();
C c = new C();
b.Testme(c);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgphYnN0cmFjdCBjbGFzcyBBCnsKICAgIHB1YmxpYyB2b2lkIFRlc3RtZShBIG90aGVyKQogICAgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidmFsdWUgZnJvbSB0aGlzOiAiICsgVmFsdWUoKSArICIgdmFsdWUgZnJvbSBvdGhlcjogIiArIG90aGVyLlZhbHVlKCkpOwogICAgfQogICAgCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgU3RyaW5nIFZhbHVlKCk7Cn0KIApjbGFzcyBCIGV4dGVuZHMgQQp7CiAgICBwcm90ZWN0ZWQgU3RyaW5nIFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gIkIgY2xhc3MiOwogICAgfQp9CiAKY2xhc3MgQyBleHRlbmRzIEEKewogICAgcHJvdGVjdGVkIFN0cmluZyBWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICJDIGNsYXNzIjsKICAgIH0KfQoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIFByb2dyYW0KewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJQiBiID0gbmV3IEIoKTsKCQlDIGMgPSBuZXcgQygpOwoJCWIuVGVzdG1lKGMpOwoJfQp9