fs:Filesystem 160.0 73.0 file:FileSource 192.0 209.0 274.0 202.0 User 34.86475730998367 0.0 b:TNBuilder ftn:FileTN fs:FileStream d:DirTreeNode 66.86475730998367 80.0 539.756828460011 126.0 651.0 0.0 683.0 305.0 571.756828460011 328.0 306.0 351.0 331.97135964975513 374.0 363.97135964975513 457.0 418.8259109283281 480.0 363.97135964975513 563.0 1. User wants to add a file to a dir in the iso node 143.89406091532933 16.868736840587744 2. It creates the source filesystem and the custom builder 317.51829970572646 74.92004824517142 570.819415201306 142.7048538003265 0.0 0.0 570.819415201306 142.7048538003265 218.81410916050066 114.16388304026121 0.0 0.0 218.81410916050066 114.16388304026121 3. It gets the file from the filesystem and add it to parent dir 379.1320632384976 217.4323774110454 327.03195662574825 218.46075295682857 0.0 0.0 327.03195662574825 218.46075295682857 4. The dir delegates in the builder. 5. The builder stat's the source file. In this example it's a reg. file 767.038589176755 206.92203801047344 694.4969551615891 312.7614712457156 0.0 0.0 694.4969551615891 312.7614712457156 314.9148790283507 359.23720542189034 0.0 0.0 314.9148790283507 359.23720542189034 6. The conversion is not needed, so the builder just creates a FileTreeNode 762.2817607167442 335.3564064307673 522.2869299335649 399.9594286575042 0.0 0.0 522.2869299335649 399.9594286575042 7. Sets the attributes from source 774.1738318667714 413.8440760209469 8 ...and a FileStream to read contents from the FileSource 762.2817607167442 478.0612602310938 534.9181953038541 453.1845675071054 0.0 0.0 534.9181953038541 453.1845675071054 482.368075796364 524.8261757327898 0.0 0.0 482.368075796364 524.8261757327898 9. Finally, the FileTreeNode is added to the parent dir, and returned to the user 757.5249322567332 556.5489298212734 689.7401267015781 614.8200784564067 0.0 0.0 689.7401267015781 614.8200784564067 363.97135964975513 656.0 10. The user can change any attribute on the FileTreeNode 735.3910524340093 659.0235200658623 373.3523804664971 666.0945878777277 0.0 0.0 373.3523804664971 666.0945878777277 «create» «create» file add_file(file,b) create_file(file) lstat() S_IFREG «create» set attributes ftn «create» set stream (fs) ftn «create» get(path) set_permission()