/** * Parses a trait adaptation precedence statement. * * @param array $reference Parsed method reference array. * @return \PDepend\Source\AST\ASTTraitAdaptationPrecedence * @throws \PDepend\Source\Parser\InvalidStateException * @since 1.0.0 */ private function parseTraitAdaptationPrecedenceStatement(array $reference) { if (count($reference) < 2) { throw new InvalidStateException($this->tokenizer->next()->startLine, $this->compilationUnit->getFileName(), 'Expecting full qualified trait method name.'); } $stmt = $this->builder->buildAstTraitAdaptationPrecedence($reference[0]); $stmt->addChild($reference[1]); $this->consumeToken(Tokens::T_INSTEADOF); $this->consumeComments(); $stmt->addChild($this->parseTraitReference()); $this->consumeComments(); while (Tokens::T_COMMA === $this->tokenizer->peek()) { $this->consumeToken(Tokens::T_COMMA); $stmt->addChild($this->parseTraitReference()); $this->consumeComments(); } return $stmt; }