 				
 				if (_macroProxy == null)
 					_macroProxy = new ProxyObject(_hasMacro, _getMacro, null, evaluateMacro); // allows evaluating macros but not setting them
+				
+				if (detectLinkableObjectChange(_getNewCompiler, macroLibraries))
+					_compiler = _getNewCompiler(true);
+				
 				var object:ICompiledObject = _compiler.compileToObject(value);
 				_isFunctionDefinition = _compiler.compiledObjectIsFunctionDefinition(object);
 				_compiledMethod = _compiler.compileObjectToFunction(object, _macroProxy, errorHandler, _useThisScope, _paramNames);

		/**
		 * This is a list of libraries to include in the static compiler for macros.
		 */
		public static const macroLibraries:LinkableString = new LinkableString();
		
		/**
		 * This function will add a library to the static list of macro libraries if it is not already added.

			macroLibraries.value = WeaveAPI.CSVParser.createCSV(rows);
		}
		
		/**
		 * This is the static compiler to be used by every LinkableFunction.
		 */
		private static var _compiler:Compiler = null;
		private static var _allLinkableFunctions:Dictionary = new Dictionary(true); // the keys in this are LinkableFunction instances
		
		/**
		 * This function returns a new compiler initialized with the libraries specified by the public static libraries variable.
