5.4 The Complete Definition We wrap our definitions in a module, resulting in the final definition as follows: module Filesystem { interface Node { idempotent string name(); }; exception GenericError { string reason; }; sequence<string> Lines; interface File extends Node { idempotent Lines read(); idempotent void write(Lines text) throws GenericError; }; sequence<Node*> NodeSeq; interface Directory extends Node { idempotent NodeSeq list(); }; };