BindingMulti = (objects, type, bindingInterface)->
	extendState(@, bindingInterface)
	@isMulti = true
	@type = type
	@bindings = bindings = []

	for object in objects
		bindings.push @createBinding(object, type, null, null, bindingInterface)


	Object.defineProperties @,
		'ID': 				value: bindings[0].ID
		'options': 			value: bindings[0].options
		'transforms': 		value: bindings[0].transforms
		'conditions': 		value: bindings[0].conditions
		'updateDep': 		value: (dep)-> bindings.forEach (binding)-> binding.updateDep(dep, binding)
		'pholderValues': 	get: ()-> bindings[0].pholderValues
		'value': 			get: ()-> bindings.map (binding)-> binding.value
		'throttleRate': 	set: (newRate)-> bindings.forEach (binding)-> binding.throttleRate = newRate
		'selfTransform': 	set: (fn)-> bindings.forEach (binding)-> binding.selfTransform = fn







proto = BindingMulti:: = Object.create(BindingInterfacePrivate)

Object.keys(Binding::).forEach (methodName)->
	proto[methodName] = (a,b)-> # Two arguments is the most ever passed to any method from BindingInterface methdos
		binding[methodName](a,b) for binding in @bindings
		return