/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
import java.text.MessageFormat ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static class A {
public final int a;
public A( ) {
this .a = 0 ;
MessageFormat .
format ( "new A() constructor is called to create an instance of {0}." ,
getClass( ) .getName ( ) ) ) ;
}
public A( int a) {
this .a = a;
MessageFormat .
format ( "new A(int) constructor is called to create an instance of {0}." ,
getClass( ) .getName ( ) ) ) ;
}
}
public final int b;
public B( int a, int b) {
super ( a) ;
this .b = b;
MessageFormat .
format ( "new B(int, int) constructor is called to create an instance of {0}." ,
getClass( ) .getName ( ) ) ) ;
}
@Override
return "B [a=" + a + ", b=" + b + "]" ;
}
}
{
B b1 = new B( 10 ,20 ) ;
oos.writeObject ( b1) ;
}
B b2 = ( B) ois.readObject ( ) ;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyBjbGFzcyBBIHsKCQlwdWJsaWMgZmluYWwgaW50IGE7CgkJCgkJcHVibGljIEEoKSB7CgkJCXRoaXMuYSA9IDA7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigKCQkJCQlNZXNzYWdlRm9ybWF0LmZvcm1hdCgibmV3IEEoKSBjb25zdHJ1Y3RvciBpcyBjYWxsZWQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHswfS4iLAoJCQkJCWdldENsYXNzKCkuZ2V0TmFtZSgpKSk7CgkJfQoKCQlwdWJsaWMgQShpbnQgYSkgewoJCQl0aGlzLmEgPSBhOwoJCQlTeXN0ZW0ub3V0LnByaW50bG4oCgkJCQkJTWVzc2FnZUZvcm1hdC5mb3JtYXQoIm5ldyBBKGludCkgY29uc3RydWN0b3IgaXMgY2FsbGVkIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB7MH0uIiwgCgkJCSAgICAgICAgZ2V0Q2xhc3MoKS5nZXROYW1lKCkpKTsKCQl9Cgl9CgkKCXB1YmxpYyBzdGF0aWMgY2xhc3MgQiBleHRlbmRzIEEgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgewoJCXB1YmxpYyBmaW5hbCBpbnQgYjsKCgkJcHVibGljIEIoaW50IGEsIGludCBiKSB7CgkJCXN1cGVyKGEpOwoJCQl0aGlzLmIgPSBiOwoJCQlTeXN0ZW0ub3V0LnByaW50bG4oCgkJCQkJTWVzc2FnZUZvcm1hdC5mb3JtYXQoIm5ldyBCKGludCwgaW50KSBjb25zdHJ1Y3RvciBpcyBjYWxsZWQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHswfS4iLAoJCQkJCWdldENsYXNzKCkuZ2V0TmFtZSgpKSk7CgkJfQoKCQlAT3ZlcnJpZGUKCQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewoJCQlyZXR1cm4gIkIgW2E9IiArIGEgKyAiLCBiPSIgKyBiICsgIl0iOwoJCX0KCQkKCQkKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJQiBiMSA9IG5ldyBCKDEwLDIwKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGIxKTsKICAgICAgICAKICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYm9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOwogICAgICAgIHRyeShPYmplY3RPdXRwdXRTdHJlYW0gb29zID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShib3MpKSB7CiAgICAgICAgICAgIG9vcy53cml0ZU9iamVjdChiMSk7CiAgICAgICAgfQoKICAgICAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBiaXMgPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYm9zLnRvQnl0ZUFycmF5KCkpOwogICAgICAgIHRyeSAoT2JqZWN0SW5wdXRTdHJlYW0gb2lzID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGJpcykpIHsKICAgICAgICAgICAgQiBiMiA9IChCKW9pcy5yZWFkT2JqZWN0KCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihiMik7CiAgICAgICAgfQoJfQp9