* $di = new Phalcon\DI();
	 *
	 * //Using a string definition
	 * $di->set('request', 'Phalcon\Http\Request', true);
	 *
	 * //Using an anonymous function
	 * $di->set('request', function(){
	 *	  return new Phalcon\Http\Request();
	 * }, true);
	 *
	 * $request = $di->getRequest();
	 *
	 *
	 */
	
	class DI implements \Phalcon\DiInterface {
		protected $_services;
		protected $_sharedInstances;
		protected $_freshInstance;
		protected static $_default;
		/**
		 * \Phalcon\DI constructor
		 *
		 */
		public function __construct(){ }
		/**
		 * Registers a service in the services container
		 *
		 * @param string $name
		 * @param mixed $definition
		 * @param boolean $shared
		 * @return \Phalcon\DI\ServiceInterface
		 */
		public function set($name, $definition, $shared=null){ }
		/**
		 * Registers an "always shared" service in the services container
		 *
		 * @param string $name
		 * @param mixed $definition
		 * @return \Phalcon\DI\ServiceInterface
		 */
		public function setShared($name, $definition){ }
		/**
		 * Removes a service in the services container
		 *
		 * @param string $name
		 */
		public function remove($name){ }
		/**
		 * Attempts to register a service in the services container
		 * Only is successful if a service hasn't been registered previously
		 * with the same name
		 *
		 * @param string $name
		 * @param mixed $definition
		 * @param boolean $shared
		 * @return \Phalcon\DI\ServiceInterface
		 */
		public function attempt($name, $definition, $shared=null){ }
		/**
		 * Sets a service using a raw \Phalcon\DI\Service definition
		 *
		 * @param string $name
		 * @param \Phalcon\DI\ServiceInterface $rawDefinition
		 * @return \Phalcon\DI\ServiceInterface
		 */
		public function setRaw($name, $rawDefinition){ }
		/**
		 * Returns a service definition without resolving
		 *
		 * @param string $name
		 * @return mixed
		 */
		public function getRaw($name){ }
		/**
		 * Returns a \Phalcon\DI\Service instance
		 *
		 * @param string $name
		 * @return \Phalcon\DI\ServiceInterface
		 */
		public function getService($name){ }
		/**
		 * Resolves the service based on its configuration
		 *
		 * @param string $name
		 * @param array $parameters
		 * @return mixed
		 */
		public function get($name, $parameters=null){ }
		/**
		 * Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance
		 *
		 * @param string $name
		 * @param array $parameters
		 * @return mixed
		 */
		public function getShared($name, $parameters=null){ }
		/**
		 * Check whether the DI contains a service by a name
		 *
		 * @param string $name
		 * @return boolean
		 */
		public function has($name){ }
		/**
		 * Check whether the last service obtained via getShared produced a fresh instance or an existing one
		 *
		 * @return boolean
		 */
		public function wasFreshInstance(){ }
		/**
		 * Return the services registered in the DI
		 *
		 * @return \Phalcon\DI\Service[]
		 */
		public function getServices(){ }
		/**
		 * Check if a service is registered using the array syntax.
		 * Alias for \Phalcon\Di::has()
		 *
		 * @param string $name
		 * @return boolean
		 */
		public function offsetExists($name){ }
		/**
		 * Allows to register a shared service using the array syntax.
		 * Alias for \Phalcon\Di::setShared()
		 *
		 *
		 *	$di['request'] = new \Phalcon\Http\Request();
		 *
		 *
		 * @param string $name
		 * @param mixed $definition
		 */
		public function offsetSet($name, $definition){ }
		/**
		 * Allows to obtain a shared service using the array syntax.
		 * Alias for \Phalcon\Di::getShared()
		 *
		 *
		 *	var_dump($di['request']);
		 *
		 *
		 * @param string $name
		 * @return mixed
		 */
		public function offsetGet($name, $parameters=null){ }
		/**
		 * Removes a service from the services container using the array syntax.
		 * Alias for \Phalcon\Di::remove()
		 *
		 * @param string $name
		 */
		public function offsetUnset($name){ }
		/**
		 * Magic method to get or set services using setters/getters
		 *
		 * @param string $method
		 * @param array $arguments
		 * @return mixed
		 */
		public function __call($method, $arguments=null){ }
		/**
		 * Set a default dependency injection container to be obtained into static methods
		 *
		 * @param \Phalcon\DiInterface $dependencyInjector
		 */
		public static function setDefault($dependencyInjector){ }
		/**
		 * Return the lastest DI created
		 *
		 * @return \Phalcon\DiInterface
		 */
		public static function getDefault(){ }
		/**
		 * Resets the internal default DI
		 */
		public static function reset(){ }
	}
}