protected function delegateDefinitionCreation($id, $value) {
        if (is_array($id)) {
            $definition = $this->createDefinitionWithAliases($id, $value);
        } else if ($this->isRegexPattern($id)) {
            $definition = new WildcardDefinition($id, $value);
        } else if (class_exists($id)) {
            $definition = new ClassDefinition($id, $value);
        } else if (interface_exists($id)) {
            $definition = new InterfaceDefinition($id, $value);
        } else {
            $definition = new ValueDefinition($id, $value);
        }

        return $definition;
    }
protected function delegateDefinitionCreation($id, $value) {
        if (is_array($id)) {
            $definition = $this->createDefinitionWithAliases($id, $value);
        } else if ($this->isRegexPattern($id)) {
            $definition = new WildcardDefinition($id, $value);
        } else if (class_exists($id)) {
            $definition = new ClassDefinition($id, $value);
        } else if (interface_exists($id)) {
            $definition = new InterfaceDefinition($id, $value);
        } else {
            $definition = new ValueDefinition($id, $value);
        }

        return $definition;
    }
@param $id
@param $value

@return IDefinition
@throws MissingDefinitionIdentifierException
@throws MissingDefinitionValueException