code: private Delta parseConditionalDelta() {
          Condition test = parseCondition();
          String then = _t.nextToken();
          if (!"then".equals(then)) {
              throw _t.syntaxError("Expected 'then' and instead saw '" + then + "'");
          }
          Delta delta = parseDelta();
          String next = _t.nextToken();
          if ("elif".equals(next)) {
              // The recursive call will consume the 'end' token.
              Delta otherwise = parseConditionalDelta();
              return Deltas.conditional(test, delta, otherwise);
          }
          Delta otherwise = Deltas.noop();
          if ("else".equals(next)) {
              otherwise = parseDelta();
              next = _t.nextToken();
          }
          if (!"end".equals(next)) {
              throw _t.syntaxError("Expected 'end' and instead saw '" + next + "'");
          }
          return Deltas.conditional(test, delta, otherwise);
      }
docs: Parses "if [condition] then [delta] elif [condition] then [delta] else [delta] end".
  In contrast to most of the other parse methods, this assumes the initial token ('if')
  has been consumed already.