lib/compiler.js
function(type, walk) {
    if (!this.atGroupMarker(type, walk))
      return false;
    // Find the end of the block, checking for adjacent blocks
    var startIdx = walk.position;
    var found = false;
    while (walk.hasCurrent() && !found) {
      walk.scrollToTerm().skipWhitespaces();
      if (!this.atGroupMarker(type, walk))
        found = true;
    }
    var g = this.stripSelector(new SubWalker(walk, startIdx, walk.position));
    this.emitGroup(type, g);
    return true;
  }
function(type, walk) {
    if (!this.atGroupMarker(type, walk))
      return false;
    // Find the end of the block, checking for adjacent blocks
    var startIdx = walk.position;
    var found = false;
    while (walk.hasCurrent() && !found) {
      walk.scrollToTerm().skipWhitespaces();
      if (!this.atGroupMarker(type, walk))
        found = true;
    }
    var g = this.stripSelector(new SubWalker(walk, startIdx, walk.position));
    this.emitGroup(type, g);
    return true;
  }
Group controls are `checkboxGroup` and `radioGroup` which share
the same semantics almost entirely.

Checkboxes are multiple choice controls. Each control begins with
either `[ ] ` for incorrect choice or `[x] ` for correct choice.

Radios are single choice controls. Each control begins with
either `( ) ` for incorrect choice or `(x) ` for correct choice.
Radios should have exactly one correct choice (otherwise the behavior
is undetermined).

Correct choices can be marked with either `x` or `+` sign.

Examples:

```
[ ] one
[x] two
[x] three
[ ] four

( ) one
(+) two
( ) three
( ) four
```