* Elisp Structure
| Keyword | Single        | Double        | Single Optval | Double Optval |
|---------+---------------+---------------+---------------+---------------|
| CAPTION | objtree       | objtree       | objtree       | objtree       |
| DATA    | quoted(:name) | quoted(:name) | -             | -             |
| HEADER  | list(quoted)  | list(quoted)  | -             | -             |
| NAME    | quoted(:name) | quoted(:name) | -             | -             |
| PLOT    | quoted(:plot) | quoted(:plot) | -             | -             |
| RESULTS | optional pair | optional pair | optional pair | optional pair |
* types
** objtree
Outer list: 1 per keyword
next list: first entry = list of objects for value. remaining entries = optval
** list(quoted)
List of quoted strings, 1 per keyword
** quoted(NAME)
Quoted string under the NAME property (for example quoted(:name))
** optional pair
When optval is supplied this is an alist with the field value being the real value and the 3nd value being the optval.
#+begin_src elisp
  ("*f*" . "*bar*")
#+end_src

When optval is not supplied this is a list containing a single string of the last occurrence of this keyword.
#+begin_src elisp
  ("*c*")
#+end_src
* Default settings
#+begin_src text
  org-element-dual-keywords ("CAPTION" "RESULTS")
  org-element-parsed-keywords ("CAPTION")
  org-element-multiple-keywords ("CAPTION" "HEADER")
  org-babel-results-keyword "RESULTS"
#+end_src
* Analysis
We don't have an example of a parsed non-dual keyword

Looks like multiple triggers list 1 per keyword

dual triggers support for optval

parsed triggers objects