public function compile(\Twig_Compiler $compiler)
{
    $compiler->raw(Template::class.'::attribute($this->env, $this->getSourceContext(), ');
    if ($this->getAttribute('ignore_strict_check')) {
        $this->getNode('node')->setAttribute('ignore_strict_check', true);
    }
    $compiler->subcompile($this->getNode('node'));
    $compiler->raw(', ')->subcompile($this->getNode('attribute'));
    
    $needFourth = $this->getAttribute('ignore_strict_check');
    $needThird = $needFourth || $this->getAttribute('is_defined_test');
    $needSecond = $needThird || \Twig_Template::ANY_CALL !== $this->getAttribute('type');
    $needFirst = $needSecond || $this->hasNode('arguments');
    if ($needFirst) {
        if ($this->hasNode('arguments')) {
            $compiler->raw(', ')->subcompile($this->getNode('arguments'));
        } else {
            $compiler->raw(', array()');
        }
    }
    if ($needSecond) {
        $compiler->raw(', ')->repr($this->getAttribute('type'));
    }
    if ($needThird) {
        $compiler->raw(', ')->repr($this->getAttribute('is_defined_test'));
    }
    if ($needFourth) {
        $compiler->raw(', ')->repr($this->getAttribute('ignore_strict_check'));
    }
    $compiler->raw(')');
}