@Nullable
    RootNode getFirstRoot() {
      if (!roots.isEmpty()) return roots.get(0);
      for (Group group : groups.values()) {
        RootNode root = group.getFirstRoot();
        if (root != null) return root;
      }
      return null;
    }
@Nullable
    RootNode getFirstRoot()