public DTWorkspace build() {
    T_node root = this.mTemp.getRootNode();
    List<NodeShell> list = new ArrayList<NodeShell>();
    this._scanTree(list, root, 32);

    this._setVFile(list);

    DTWorkspaceImpl works = new DTWorkspaceImpl(this.mTemp);
    DTWorkspace worksFacade = new DTWorkspaceFacade(works);
    for (NodeShell ns : list) {
      DTNode dtNode = ns.createNode(worksFacade);
      works.addNode(dtNode);
    }
    return worksFacade;
  }
 private void _setVFile(List<NodeShell> list) {
   // make map
   Map<T_node, NodeShell> map = new HashMap<T_node, NodeShell>();
   for (NodeShell ns : list) {
     map.put(ns.mNode, ns);
   }
   // find main node
   T_node mainNode = this.mTemp.getMainNode();
   NodeShell mainNS = map.get(mainNode);
   // set parent for NS(s)
   for (NodeShell ns : list) {
     T_node node_p, node_c;
     node_c = ns.mNode;
     if (node_c == null) {
       node_p = null;
     } else {
       node_p = node_c.getParent();
     }
     NodeShell ns_p = map.get(node_p);
     ns.setParent(ns_p);
   }
   // set path for mainNS
   mainNS.setPath(this.mFile);
   for (NodeShell ns : list) {
     ns.getVFile();
   }
 }
    public void setPath(VFile file) {

      this.mVFile = file;

      String name_f = file.getName();
      String name_n = this.getName();

      if (name_n == null) {
        // skip
      } else if (name_n.equals("")) {
        // skip
      } else if (name_n.equals("*")) {
        // skip
      } else {
        if (!name_n.equals(name_f)) {
          throw new RuntimeException("required a '" + name_n + "' but get a '" + name_f + "'");
        }
      }

      NodeShell parent = this.mParent;
      if (parent != null) {
        parent.setPath(file.getParentFile());
      }
    }