// to represent one directory entry
abstract class ADE {
}

// to represent a file
class File extends ADE {
  String name;
  int size;

  File(String name, int size) {
    this.name = name;
    this.size = size; }
}

// to represent a directory
class Directory extends ADE {
  String name;
  ALoDE lode;

  Directory(String name, ALoDE lode) {
    this.name = name;
    this.lode = lode; }
}

// to represent a list of directory entries
abstract class ALoDE {
}

// to represent an empty list of directory entries
class MtLoDE extends ALoDE {

  MtLoDE() {
  }
}

// to represent a cosntructed list of directory entries
class ConsLoDE extends ALoDE {
  ADE fst;
  ALoDE rst;

  ConsLoDE(ADE fst, ALoDE rst) {
    this.fst = fst;
    this.rst = rst; }
}


/* Interactions:
Examples of files:

File f1 = new File("MyPics", 1000);
File f2 = new File("MySong", 1500); 
File f3 = new File("hmwk1", 300);
 
Examples of ALoDE
 
MtLoDE mtlode  = new MtLoDE(); 
ConsLoDE lode1 = new ConsLoDE(f1, mtlode); 
ConsLoDE lode2 = new ConsLoDE(f2, lode1);
ConsLoDE lode3 = new ConsLoDE(f3, mtlode);
 
Examples of Directories

Directory d1 = new Directory("Work", lode3);
Directory d2 = new Directory("Play", lode2);
Directory dir = new Directory("Main Dir", 
                              new ConsLoDE(d1,
                                           new ConsLoDE(d2,
                                           mtlode)));
*/