public function testMethod()
{
$reflection = $this->interpreter->getReflection([$this, 'method']);
$location = $reflection->getLocation();
$scope = $reflection->getScope();
$signature = $reflection->getSignature();
$this->assertSame(__FILE__, $location->getFilePath());
$this->assertSame(true, $location->inNamespace());
$this->assertSame(__NAMESPACE__, $location->getNamespace());
$this->assertSame($this->method()['start'], $location->getStartLine());
$this->assertSame($this->method()['end'], $location->getEndLine());
$this->assertSame($this, $scope->getThis());
$this->assertEquals([], $scope->getVariableTable());
$this->assertSame(__CLASS__, $scope->getScopeType());
$this->assertSame(__CLASS__, $scope->getThisType());
$this->assertSame(IFunctionSignature::TYPE_METHOD, $signature->getType());
$this->assertSame(IFunctionSignature::ACCESS_PUBLIC, $signature->getAccessModifier());
$this->assertSame(false, $signature->isStatic());
$this->assertSame(true, $signature->returnsReference());
$this->assertSame('method', $signature->getName());
$this->assertSame(IFunctionSignature::POLYMORPH_FINAL, $signature->getPolymorphModifier());
$this->assertEquals([O\Expression::parameter('start', null, O\Expression::value($this->method()['start']))], $signature->getParameterExpressions());
$this->assertEquals(null, $signature->getScopedVariableNames());
}