The parameters function in the binding for
scripts loaded by abuild's Groovy backend is actually a closure
returned by ParameterHelper.createClosure.
This function takes a closure as an argument. In order to make
things that look like assignments inside that closure modify
abuild parameters, the parameters call
changes the delegate of the closure to an instance of
ParameterHelper helper class constructed
with a reference to the abuild object, an
instance of BuildState. Within
ParameterHelper, the
get, set, and
leftshift methods are overridden to result
in fields being translated into
ParameterHelper objects which, when
assigned to or appended to, relay the action through appropriate
calls in BuildState, which implements the
Parameterized interface. The code is
relatively small. For additional details, please find
ParameterHelper.groovy and
Parameterized.groovy in abuild's source
code and look at the parameter-helper test
suite.