class Pair extends Object { 
  Object fst; 
  Object snd; 
  Pair (Object fst, Object snd) { 
    super (); 
    this.fst = fst; 
    this.snd = snd; 
  } 
  Pair setSnd (Object snd1) { 
    return new Pair ((Object)this.fst, snd1); 
  } 
} 

class A extends Object { A () { super (); } }
class B extends Object { B () { super (); } }
class C extends Object { C () { super (); } }

Pair p1 = new Pair (new A (), new B ());
Pair p2 = p1.setSnd (new C ());
