# Functions
DeleteOption removes an option if it exists.
DeleteProperty removes a property from the object expression if it exists.
GetOption finds and returns the init for the option's variable assignment.
GetProperty finds and returns the AST node for the property value.
HasDuplicateOptions determines whether or not there are multiple assignments to the same option variable.
Match takes an AST and a pattern and returns the nodes of the AST that match the given pattern.
`Option` passes the `OptionStatement` in the AST rooted at `node` that has the specified identifier to `fn`.
Creates an `OptionFn` for updating the values of an `OptionStatement` that has an `ObjectExpression` as value.
Creates an `OptionFn` for setting the value of an `OptionStatement`.
SetOption replaces an existing option's init with the provided init or adds the option if it doesn't exist.
SetProperty replaces an existing property definition with the provided object expression or adds the property if it doesn't exist.
# Variables
OptionNotFoundError variable is to handle the error gracefully in the client code.
# Type aliases
`OptionFn` is a function that, provided with an `OptionStatement`, returns an `Expression` or an error.