src/PhpToZephir/TypeFinder.php
private function findReturnTag($phpdoc = null, array $definition, ClassMetadata $classMetadata, ClassMethod $node)
    {
        $implements = $classMetadata->getImplements();
        if (is_array($implements) === true) {
            foreach ($implements as $implement) {
                foreach ($this->classCollector->getCollected() as $className => $classInfo) {
                    if ($classMetadata->getNamespace().'\\'.$implement === $className) {
                        try {
                            $phpdoc = $this->nodeToDocBlock($this->findMethod($classInfo, $node->name));
                        } catch (\InvalidArgumentException $e) {
                        }
                    }
                    foreach ($classMetadata->getClasses() as $use) {
                        if ($use.'/'.$implement === $className) {
                            try {
                                $phpdoc = $this->nodeToDocBlock($this->findMethod($classInfo, $node->name));
                            } catch (\InvalidArgumentException $e) {
                            }
                        }
                    }
                }
            }
        }

        if ($phpdoc !== null) {
            foreach ($phpdoc->getTags() as $tag) {
                if ($this->isReturnTag($tag) === true) {
                    $definition['return'] = array(
                        'type' => $this->findType($tag, $node, $classMetadata),
                    );
                    break;
                }
            }
        }

        return $definition;
    }
private function findReturnTag($phpdoc = null, array $definition, ClassMetadata $classMetadata, ClassMethod $node)
    {
        $implements = $classMetadata->getImplements();
        if (is_array($implements) === true) {
            foreach ($implements as $implement) {
                foreach ($this->classCollector->getCollected() as $className => $classInfo) {
                    if ($classMetadata->getNamespace().'\\'.$implement === $className) {
                        try {
                            $phpdoc = $this->nodeToDocBlock($this->findMethod($classInfo, $node->name));
                        } catch (\InvalidArgumentException $e) {
                        }
                    }
                    foreach ($classMetadata->getClasses() as $use) {
                        if ($use.'/'.$implement === $className) {
                            try {
                                $phpdoc = $this->nodeToDocBlock($this->findMethod($classInfo, $node->name));
                            } catch (\InvalidArgumentException $e) {
                            }
                        }
                    }
                }
            }
        }

        if ($phpdoc !== null) {
            foreach ($phpdoc->getTags() as $tag) {
                if ($this->isReturnTag($tag) === true) {
                    $definition['return'] = array(
                        'type' => $this->findType($tag, $node, $classMetadata),
                    );
                    break;
                }
            }
        }

        return $definition;
    }
@param string   $actualNamespace
@param array    $definition
@param array    $use
@param array    $classes
@param DocBlock $phpdoc

@return array