public function resolveConflictInsteadOf($trait, $method, $insteadOfTrait)
    {
        $fullClass = $this->classFile->getFullClassName($trait);
        if (method_exists($fullClass, $method) === false) {
            throw \Aviogram\Common\PHPClass\Exception\ClassTrait::undefinedMethod($trait, $method);
        }

        if ($trait !== $this->name && $insteadOfTrait !== $this->name) {
            throw \Aviogram\Common\PHPClass\Exception\ClassTrait::knownTraitNotUsedByResolveInsteadOf($this->name);
        } else if ($trait !== $this->name && in_array($trait, $this->secondNames) === false) {
            if ($this->classFile->isClassDefined($trait) === false) {
                throw \Aviogram\Common\PHPClass\Exception\ClassTrait::traitNotFound($trait);
            }

            $this->secondNames[] = $trait;
        } else if ($insteadOfTrait !== $this->name && in_array($insteadOfTrait, $this->secondNames) === false) {
            if ($this->classFile->isClassDefined($insteadOfTrait) === false) {
                throw \Aviogram\Common\PHPClass\Exception\ClassTrait::traitNotFound($insteadOfTrait);
            }

            $this->secondNames[] = $insteadOfTrait;
        }

        $this->conflicts[] = "{$trait}::{$method} insteadOf {$insteadOfTrait};";

        return $this;
    }