Displaying a complex set of criteria

I have a series of criteria required to get a permission. These criteria can be met by taking a class (this is for a hackerspace website I'm making). Some criteria have multiple classes, where any class can grant you access to said criteria. This is only for displaying the data, as criteria are checked off by instructors when a class is completed.

I want to find out the best and clearest way to display a complex structure like this. So it would be something like.

To use this tool you need the following classes:

This one class:
___ Shop basics

Any one of these 4 classes:
___ Intro to Woodworking
_X_ Woodworking: Build a box
___ Woodworking: Build a bench
___ Woodworking: Adirondak Chair Making

This one class:
_X_ Safety Training

And any one of these 2 classes:
___ Some other class
_X_ Yet another class

Ideally I'd like this to be even more concise like:

To use this tool you need the following classes:

All of these classes:
___ Shop basics
_X_ Safety Training

And any one of these 4 classes:
___ Intro to Woodworking
_X_ Woodworking: Build a box
___ Woodworking: Build a bench
___ Woodworking: Adirondak Chair Making

And any one of these 2 classes:
___ Some other class
_X_ Yet another class

But I feel like the first solution is clunky and the second solution is harder for the user to parse. Are there any elegant solutions around the web for displaying this? All the similar posts I've seen on ux.stackexchange.com seem great for applications (data editing) but are clunkier for displaying the data.