UVS new expressions ----- className; new Test::$className; new $test::$className; new $weird[0]->foo::$className; ----- !!php7 array( 0: Stmt_Expression( expr: Expr_New( class: Expr_Variable( name: className ) args: array( ) ) ) 1: Stmt_Expression( expr: Expr_New( class: Expr_ArrayDimFetch( var: Expr_Variable( name: array ) dim: Scalar_String( value: className ) ) args: array( ) ) ) 2: Stmt_Expression( expr: Expr_New( class: Expr_ArrayDimFetch( var: Expr_Variable( name: array ) dim: Scalar_String( value: className ) ) args: array( ) ) ) 3: Stmt_Expression( expr: Expr_New( class: Expr_PropertyFetch( var: Expr_Variable( name: obj ) name: className ) args: array( ) ) ) 4: Stmt_Expression( expr: Expr_New( class: Expr_StaticPropertyFetch( class: Name( parts: array( 0: Test ) ) name: className ) args: array( ) ) ) 5: Stmt_Expression( expr: Expr_New( class: Expr_StaticPropertyFetch( class: Expr_Variable( name: test ) name: className ) args: array( ) ) ) 6: Stmt_Expression( expr: Expr_New( class: Expr_StaticPropertyFetch( class: Expr_PropertyFetch( var: Expr_ArrayDimFetch( var: Expr_Variable( name: weird ) dim: Scalar_LNumber( value: 0 ) ) name: foo ) name: className ) args: array( ) ) ) )