@Test
public void apply4() throws Exception {

  ExprStmt toOutline = new ExprStmt(new BinaryExpr(
      new VariableIdentifierExpr("x"),
      new BinaryExpr(new VariableIdentifierExpr("x"),
          new VariableIdentifierExpr("x"),
          BinOp.ADD),
      BinOp.ASSIGN));
  Scope fakeScope = new Scope();
  fakeScope.add("x", new QualifiedType(BasicType.VEC2,
      Collections.singletonList(TypeQualifier.OUT_PARAM)), Optional.empty());
  new OutlineStatementMutation(toOutline, fakeScope, tu, fakeFunction, new IdGenerator()).apply();
  // "uniform" is not expected in the declaration
  final String expectedDecl = "vec2 " + Constants.OUTLINED_FUNCTION_PREFIX + "0(vec2 x)\n"
      + "{\n"
      + PrettyPrinterVisitor.defaultIndent(1) + "return x + x;\n"
      + "}\n";
  assertEquals(expectedDecl, tu.getTopLevelDeclarations().get(0).getText());
  assertEquals("x = " + Constants.OUTLINED_FUNCTION_PREFIX + "0(x);\n",
      toOutline.getText());
}