Section Header
    + name := ABSTRACT_ENTRY;
    - comment := "Abstract Entry.";
Section Inherit
    - parent_object:OBJECT :=
Section Public
Path.
    + path:STRING_CONSTANT;
    + name:STRING_CONSTANT;
    + link_count:INTEGER;
Date / Time.
    + access_time:TIME;
    + access_date:DATE;
    + update_time:TIME;
    + update_date:DATE;
type.
    + is_directory:BOOLEAN;
    - is_file:BOOLEAN <-
    - this:ENTRY <-
Size.
    + size:UINTEGER_32;
Open / Close
    - is_open:BOOLEAN <-
    - open:ENTRY <-
        Return FILE or DIRECTORY, NULL:error.
    - open_read_only:ENTRY <-
        Return FILE or DIRECTORY, NULL:error.
    - open_bmp:BMP_FILE <-
        Return FILE or DIRECTORY, NULL:error.
    - open_ai:AI_FILE <-
        Return FILE or DIRECTORY, NULL:error.
    - close:ENTRY <-
Manager.
    - remove:BOOLEAN <-
        Remove file or directory (WARNING: delete recursive)
    - rename new_name:ABSTRACT_STRING :BOOLEAN <-
Section ENTRY
    + child:ENTRY;
    - make_entry p:ABSTRACT_STRING :BOOLEAN <-
    - make e:ENTRY :BOOLEAN <-
        Redefine in DIRECTORY and FILE
    - set_path n:ABSTRACT_STRING <-
    - reduce_path st:STRING <-
Section Public
Alias Entry.
    - alias:HASHED_DICTIONARY[ENTRY,ABSTRACT_STRING] :=
    - get_entry p:ABSTRACT_STRING :ENTRY <-
    - get_parent_path p:ABSTRACT_STRING in tmp:STRING <-
    - get_parent_intern p:ABSTRACT_STRING :DIRECTORY <-
Physical implementation.
    - physical_make:BOOLEAN <-
    - physical_remove_directory:BOOLEAN <-
    - physical_remove_file:BOOLEAN <-
    - physical_rename old_path:ABSTRACT_STRING with new_path:ABSTRACT_STRING :BOOLEAN <-
Service routine
    - string_tmp:STRING :=
    - string_tmp2:STRING :=