anchor.diff:  								  method="set#propDefs[prop].getName()#">
   							<cfinvokeargument name="#propDefs[prop].getArgumentName()#"
   								  	value="#propDefs[prop].getValue()#"/>
  -						</cfinvoke>			
  +						</cfinvoke>
   					<cfelseif propType eq "map" or propType eq "list">
   						<cfinvoke component="#beanInstance#"
   								  method="set#propDefs[prop].getName()#">
   							<cfinvokeargument name="#propDefs[prop].getArgumentName()#"
   								  	value="#constructComplexProperty(propDefs[prop].getValue(), propDefs[prop].getType(), localBeanCache)#"/>
  -						</cfinvoke>				
  +						</cfinvoke>
   					<cfelseif propType eq "ref" or propType eq "bean">
   						<cfset dependentBeanDef = getMergedBeanDefinition(propDefs[prop].getValue()) />
   						<cfif dependentBeanDef.isSingleton()>
  
positive.code: 			<cfthrow type="coldspring.NoSuchBeanDefinitionException" detail="Bean definition for bean named: #arguments.beanName# could not be found."/>
  		</cfif>
  	</cffunction>
  	
  	<cffunction name="getBean" access="public" output="false" returntype="any" 
  				hint="returns an instance of the bean registered under the given name. Depending on how the bean was configured, either a singleton and thus shared instance or a newly created bean will be returned. A BeansException will be thrown when either the bean could not be found (in which case it'll be a NoSuchBeanDefinitionException), or an exception occurred while instantiating and preparing the bean">
  		<cfargument name="beanName" required="true" type="string" hint="name of bean to look for"/>
  		<cfset var returnFactory = Left(arguments.beanName,1) IS '&'>
  		<cfset var resolvedName = "" />
  		<cfset var beanDef = 0 />
  		
  		<cfif returnFactory>
  			<cfset arguments.beanName = Right(arguments.beanName,Len(arguments.beanName)-1) />
  		</cfif>
  		<!--- the supplied 'beanName' could be an alias, so we want to resolve that to the concrete name first --->
  		<cfset resolvedName = resolveBeanName(arguments.beanName) />
  		
  		<cfif localFactoryContainsBean(resolvedName)>
  			<!--- now get the merged bean definition (this all would be better if we could circumvent this by directly 
  				  checking the cache first) all instances of variables.beanDefs[resolvedName] changed to beanDef --->
  			<cfset beanDef = getMergedBeanDefinition(resolvedName)/>
  			<cfif beanDef.isAbstract()>
  				<cfthrow type="coldspring.BeanCreationException" 
  						 detail="Abstract Beans cannot be instanciated. Did you really meen to define: #resolvedName# as 'Abstract'?"/>
  			</cfif>
  			<cfif beanDef.isSingleton()>
  
negative.code: 							<cfset arguments.ComplexProperty[entry] = getBeanFromSingletonCache(dependentBeanDef.getBeanID())>
  						<cfelse>
  							<cfset arguments.ComplexProperty[entry] = localBeanCache[dependentBeanDef.getBeanID()] />
  						</cfif>
  					<cfelseif isStruct(arguments.ComplexProperty[entry])>
  						<!--- ok, we found a map within this list, so recurse --->
  						<cfset findComplexPropertyRefs(arguments.ComplexProperty[entry],"map",arguments.localBeanCache)/>
  					<cfelseif isArray(arguments.ComplexProperty[entry])>
  						<!--- ok, we found a list within this list, so recurse --->
  						<cfset arguments.ComplexProperty[entry] = findComplexPropertyRefs(arguments.ComplexProperty[entry],"list",arguments.localBeanCache)/>
  					</cfif>
  				</cfloop>
  				<cfreturn arguments.ComplexProperty />
  			</cfcase>
  		</cfswitch>
  
  	</cffunction>
  
  	<cffunction name="isCFC" access="public" returntype="boolean">
  		<cfargument name="objectToCheck" type="any" required="true"/>
  
  		<cfset var md = getMetaData(arguments.objectToCheck)/>
  		<cfreturn isObject(arguments.objectToCheck) and structKeyExists(md,'type') and md.type eq 'component'/>
  
  	</cffunction>
  
  	<cffunction name="flattenMetaData" access="public" output="false" hint="takes metadata, copies inherited methods into the top level function array, and returns it" returntype="struct">
  		<cfargument name="md" type="struct" required="true" />
  		<cfset var i = "" />
  		<cfset var flattenedMetaData = duplicate(arguments.md)/>
  		<cfset var foundFunctions = ""/>
  		<cfset var access = "" />
  
  		<cfset flattenedMetaData.functions = arraynew(1)/>
  
  		<cfloop condition="true">
  			<cfif structKeyExists(arguments.md, "functions")>
  				<cfloop from="1" to="#arrayLen(arguments.md.functions)#" index="i">
  