Package-level declarations
Types
A_Bundle is an interface that specifies the operations specific to message bundles that an AvailObject must implement. It's a sub-interface of A_BasicObject, the interface that defines the behavior that all AvailObjects are required to support.
A_BundleTree is an interface that specifies the operations specific to a message bundle tree that an AvailObject must implement. It's a sub-interface of A_BasicObject, the interface that defines the behavior that all AvailObjects are required to support.
A message bundle is how a message name is bound to a method. Besides the message name, which is an A_Atom, the bundle also contains information useful for parsing its invocations. This information includes parsing instructions which, when aggregated with other bundles, forms a message bundle tree. This allows parsing of multiple similar methods in aggregate, avoiding the cost of repeatedly parsing the same constructs (tokens and subexpressions) for different purposes.
A message bundle tree is used by the Avail parser. Since the Avail syntax is so flexible, we make up for that simplicity with a complementary complexity in the parsing mechanism. A message bundle tree is used to keep track of how far along the parser has gotten in the parsing of a method invocation. More powerfully, it does this for multiple methods simultaneously, at least up to the point that the method names diverge.