public LaContainer include(LaContainer parent, String path) { final String realPath = pathResolver.resolvePath(parent.getPath(), path); assertCircularInclude(parent, realPath); enter(realPath); try { final LaContainer root = parent.getRoot(); final LaContainer child; synchronized (root) { if (root.hasDescendant(realPath)) { showReadingLog(parent, path, realPath, true); child = root.getDescendant(realPath); parent.include(child); } else { showReadingLog(parent, path, realPath, false); final String ext = getExtension(realPath); final LaContainerBuilder builder = getBuilder(ext); child = builder.include(parent, realPath); root.registerDescendant(child); if (child.isInitializeOnCreate()) { child.init(); } } } return child; } finally { leave(realPath); } }