protected function compileMarkerLookup(array $marked)
	{
		$code = '';
		
		foreach($marked as $markerType => $markedBindings)
		{
			$code .= "\tpublic function markedBindings_" . str_replace('\\', '_', $markerType) . "() {\n";
			$code .= "\t\tstatic \$bindings;\n";
			$code .= "\t\tif(\$bindings === NULL) {\n";
			$code .= "\t\t\t\$bindings = [\n";
				
			$index = 0;
				
			foreach($markedBindings as $binding)
			{
				foreach($binding->getMarkers() as $marker)
				{
					if(!$marker instanceof $markerType)
					{
						continue;
					}
						
					if($index++ != 0)
					{
						$code .= ",\n";
					}
						
					$vars = get_object_vars($marker);
						
					$code .= "\t\t\t\t[\$this->reviveMarker(";
					$code .= var_export(get_class($marker), true);
						
					if(!empty($vars))
					{
						$code .= ', ' . var_export($vars, true);
					}
						
					$prop = str_replace('\\', '_', $binding->getTypeName());

					$code .= "), (\$this->bound[" . var_export($binding->getTypeName(), true);
					$code .= "] !== true) ? \$this->bound[" . var_export($binding->getTypeName(), true);
					$code .= "] : (\$this->bound[" . var_export($binding->getTypeName(), true);
					$code .= "] = \$this->binding_$prop())]";
				}
			}
				
			$code .= "\n\t\t\t];\n\t\t}\n";
			$code .= "\t\treturn \$bindings;\n";
			$code .= "\t}\n\n";
		}
		
		return $code;
	}