import java.util.ArrayList;
import java.util.List;

class Rekening implements Cloneable {
    private final String nomor;
    private final List<String> mutasi;

    public Rekening(String nomor) {
        this.nomor = nomor;
        this.mutasi = new ArrayList<>();
    }

    public void catat(String transaksi) {
        mutasi.add(transaksi);
    }

    public List<String> mutasi() {
        return mutasi;
    }

    // clone() di Object bersifat protected; override menjadi public
    // agar pemanggil luar boleh memakainya.
    @Override
    public Rekening clone() {
        try {
            return (Rekening) super.clone(); // Object.clone: salinan DANGKAL
        } catch (CloneNotSupportedException e) {
            // Tidak terjadi karena class ini implements Cloneable.
            throw new AssertionError(e);
        }
    }
}

public class SalinanDangkal {
    public static void main(String[] args) {
        Rekening asli = new Rekening("123-456");
        asli.catat("setor 500000");

        Rekening salinan = asli.clone();
        salinan.catat("tarik 100000"); // dicatat lewat SALINAN...

        // ...tetapi muncul juga di ASLI: bukti field dibagi bersama.
        System.out.println("mutasi asli   : " + asli.mutasi());
        System.out.println("mutasi salinan: " + salinan.mutasi());
    }
}
