private Theme loadTheme(String name, Theme.Type type) throws IOException {
    Theme theme = findTheme(name, type);
    if (theme != null && (theme.getParentName() != null || theme.getImportName() != null)) {
      List<Theme> themes = new LinkedList<>();
      themes.add(theme);

      if (theme.getImportName() != null) {
        String[] s = theme.getImportName().split("/");
        themes.add(findTheme(s[1], Theme.Type.valueOf(s[0].toUpperCase())));
      }

      if (theme.getParentName() != null) {
        for (String parentName = theme.getParentName();
            parentName != null;
            parentName = theme.getParentName()) {
          theme = findTheme(parentName, type);
          themes.add(theme);

          if (theme.getImportName() != null) {
            String[] s = theme.getImportName().split("/");
            themes.add(findTheme(s[1], Theme.Type.valueOf(s[0].toUpperCase())));
          }
        }
      }

      return new ExtendingTheme(themes);
    } else {
      return theme;
    }
  }