sequenceDiagram
    box fuse3[external]
        participant ext_create as create
    end

    box linux.rs
        participant lnx_create as EncryptedFsFuse3::create
        participant nod_create as EncryptedFsFuse3::create_nod
        participant chk_access as check_access 
    end

    box encryptedfs.rs
        participant enc_create as EncryptedFs::create
        participant get_attr as EncryptedFs::get_attr
    end

    box std::fs[external]
        participant file_open as File::open
        participant create_dir as fs::create_directory
    end


    ext_create -->> lnx_create : [parent_inode,name,mode,flags]
    lnx_create -->> nod_create : [parent_inode,name,mode,read_flag,write_flag]
    nod_create -->> get_attr : [parent_inode]
    get_attr -->> nod_create : [parent_attributes]
    nod_create -->> chk_access : [parent_attributes]
    chk_access -->> nod_create : 
    nod_create -->> enc_create : [parent_inode,attributes,read_flag,write_flag]
        alt is file 
            enc_create -->> file_open : 
            file_open -->> enc_create : [file_handle,attributes]
        else is directory
            enc_create -->> create_dir : 
            create_dir -->> enc_create : [file_handle=0 ,attributes]
        end
    enc_create -->> nod_create : [file_handle,attributes]
    nod_create -->> lnx_create : [file_handle,attributes]
    lnx_create -->> ext_create : [file_handle,attributes]