private static void checkContract(final BaseCloneable original, final BaseCloneable clone) {
    System.out.println("Original: " + original);
    System.out.println("Kopie: " + clone);

    // Kontraktprüfung
    System.out.println("\nKontraktprüfung:");
    System.out.println("Objekterzeugung? " + (clone != original));
    System.out.println("Typgleichheit?   " + clone.getClass().equals(original.getClass()));
    System.out.println("Wertgleichheit?  " + clone.equals(original));
  }
  public static void main(String[] args) {
    // Kopieren durch Klonen
    final BaseCloneable original = new BaseCloneable(47, 11);
    final BaseCloneable clone = original.clone();
    System.out.println("Original: " + original);
    System.out.println("Kopie: " + clone);

    // Verschiedene Prüfungen durchführen
    checkContract(original, clone);
    modify(original, clone);
  }
 private static void modify(final BaseCloneable original, final BaseCloneable clone) {
   // Ä„nderung in der Kopie
   System.out.println("\nĄnderung:");
   clone.value = 13;
   System.out.println("Original: " + original);
   System.out.println("Kopie: " + clone);
 }