Il sistema di memorizzazione su disco del sistema operativo DGOS è basato su oggetti che si chiamano FileSystemItem; ogni FileSystemItem può essere di uno dei seguenti tipi:
Si definiscano i tipi opportuni che realizzano File, FileZip, Directory, e FileSystemItem. Per tutti gli oggetti devono essere definite l'uguaglianza profonda con equals, il metodo hashCode opportuno, e la copia profonda con clone.
Si definisca una classe ServiziDGFS che contiene due metodi statici void stampaFS(FileSystemItem f) che stampa tutti i file e cartelle (incluso il contenuto dei file zip) e int dimensioneFS(FileSystemItem f), che calcola la dimensione totale di tutti i file (per i file zip si calcola la dimensione del file e non del suo contenuto).
Si determini la complessità del metodo clone della parte 1.