code: 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;
      }
docs: @param $id
  @param $value
  
  @return IDefinition
  @throws MissingDefinitionIdentifierException
  @throws MissingDefinitionValueException