{
__CLOVER_194_0.S[12681]++;String name = (String) i.next();
__CLOVER_194_0.S[12682]++;boolean isFormal = spec.getParameter(name) != null;
__CLOVER_194_0.S[12683]++;IBindingSpecification bspec = contained.getBinding(name);
// If not allowing informal parameters, check that each binding
// matches
// a formal parameter.
__CLOVER_194_0.S[12684]++;if ((((formalOnly && !isFormal) && (++__CLOVER_194_0.CT[2167] != 0)) || (++__CLOVER_194_0.CF[2167] == 0))){
__CLOVER_194_0.S[12685]++;throw new ApplicationRuntimeException(PageloadMessages.formalParametersOnly(
component,
name), component, bspec.getLocation(), null);}
// If an informal parameter that conflicts with a reserved name,
// then
// skip it.
__CLOVER_194_0.S[12686]++;if ((((!isFormal && spec.isReservedParameterName(name)) && (++__CLOVER_194_0.CT[2168] != 0)) || (++__CLOVER_194_0.CF[2168] == 0))){
__CLOVER_194_0.S[12687]++;continue;}
// The type determines how to interpret the value:
// As a simple static String
// As a nested property name (relative to the component)
// As the name of a binding inherited from the containing component.
// As the name of a public field
// As a script for a listener
__CLOVER_194_0.S[12688]++;BindingType type = bspec.getType();
// For inherited bindings, defer until later. This gives components
// a chance to setup bindings from static values and expressions in
// the
// template. The order of operations is tricky, template bindings
// come
// later.
__CLOVER_194_0.S[12689]++;if ((((type == BindingType.INHERITED) && (++__CLOVER_194_0.CT[2169] != 0)) || (++__CLOVER_194_0.CF[2169] == 0))){
{
__CLOVER_194_0.S[12690]++;QueuedInheritedBinding queued = new QueuedInheritedBinding(component, bspec
.getValue(), name);
__CLOVER_194_0.S[12691]++;_inheritedBindingQueue.add(queued);
__CLOVER_194_0.S[12692]++;continue;
}}