original_string: protected static function compile_properties(array $properties, $defaults = true)
  	{
  		$p = $properties;
  		$properties = [];
  
  		foreach ($p as $key => $value)
  		{
  			if (is_int($key))
  			{
  				$key = $value;
  				$value = [];
  			}
  
  			// Get property defaults
  			if ($defaults and $property = static::property($key, false))
  			{
  				$value = array_replace_recursive($property, $value);
  			}
  
  			$properties[$key] = $value;
  		}
  
  		return $properties;
  	}
code: protected static function compile_properties(array $properties, $defaults = true)
  	{
  		$p = $properties;
  		$properties = [];
  
  		foreach ($p as $key => $value)
  		{
  			if (is_int($key))
  			{
  				$key = $value;
  				$value = [];
  			}
  
  			// Get property defaults
  			if ($defaults and $property = static::property($key, false))
  			{
  				$value = array_replace_recursive($property, $value);
  			}
  
  			$properties[$key] = $value;
  		}
  
  		return $properties;
  	}
code_tokens: protected static function compile_properties ( array $ properties , $ defaults = true ) { $ p = $ properties ; $ properties = [ ] ; foreach ( $ p as $ key => $ value ) { if ( is_int ( $ key ) ) { $ key = $ value ; $ value = [ ] ; } // Get property defaults if ( $ defaults and $ property = static :: property ( $ key , false ) ) { $ value = array_replace_recursive ( $ property , $ value ) ; } $ properties [ $ key ] = $ value ; } return $ properties ; }
docstring: Compiles skeleton properties
  
  @param []      $properties
  @param boolean $defaults
  
  @return []
docstring_tokens: Compiles skeleton properties