Make two classes: MyFile and its child, MyDict. MyFiles have a field "name" and a field "size", which are known when the files are constructed; MyFiles also have a getter and a setter for "size". MyDicts themselves do not take any space (their size is zero), but they contain a list of MyFiles. The getter of "size" returns the sizes of all contained MyFiles (note that some might be MyDicts themselves). The setter of "size" has to throw an UnsupportedOperationException. Besides the above operations, the classes should override toString, equals (based on the equality of names and sizes), hashCode.