class A implements Serializable
  {
    B b;
  };

  class B implements Serializable
  {
    C c;
  }

  class C implements Serializable
  {
    A a;
  }

  public static void main (String [] args)
  {
    A a = new A();
    a.b = new B();
    a.b.c = new C();
    a.b.c.a = a;

    new ObjectOutputStream (new FileOutputStream ("somefile")).writeObject (a);
  }