possible dependencies:

    - unix pattern __foo/*
    - object: __foo//bar, __foo/bar
    - singleton with object_id: __foo/singleton
    - singleton without object_id: __foo/

solving dependencies:

    solve_dep(object, run_list):
        - list = [me]
        - if status == IN_DEPENDENCY:
            fail: circular dependency
        - status = IN_DEPENDENCY
        - create_list_of_deps(object)
            - try pattern expansion
        - for each dependency:
            if object does not exist:
                fail
            else:
                list.append(solve_dep(object, run_list)):
        - status == IN_LIST
        - return [me, dependencies [, dependencies of dependencies]]
