formatter: some fixes for indentation between paren open and paren close, if they span multiple lines
diff --git a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
index a1bc2b0..38f429f 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -818,6 +818,16 @@
 						}
 						break;
 					}
+					case ASTokenTypes.TOKEN_PAREN_CLOSE: {
+						if (!blockStack.isEmpty()) {
+							BlockStackItem item = blockStack.get(blockStack.size() - 1);
+							if (item.token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN) {
+								indent = decreaseIndent(indent);
+								blockStack.remove(item);
+							}
+						}
+						break;
+					}
 					case ASTokenTypes.TOKEN_KEYWORD_AS:
 					case ASTokenTypes.TOKEN_KEYWORD_IS:
 					case ASTokenTypes.TOKEN_KEYWORD_IN:
@@ -1072,6 +1082,38 @@
 						indent = increaseIndent(indent);
 						blockStack.add(new BlockStackItem(token));
 						break;
+					case ASTokenTypes.TOKEN_PAREN_OPEN: {
+						indent = increaseIndent(indent);
+						blockStack.add(new BlockStackItem(token));
+						if (inControlFlowStatement) {
+							controlFlowParenStack++;
+						}
+						break;
+					}
+					case ASTokenTypes.TOKEN_PAREN_CLOSE: {
+						if (inControlFlowStatement) {
+							controlFlowParenStack--;
+							if (controlFlowParenStack <= 0) {
+								inControlFlowStatement = false;
+								controlFlowParenStack = 0;
+								blockOpenPending = true;
+								if (nextToken != null && nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
+									blockStack.remove(blockStack.size() - 1);
+									if (!skipWhitespaceBeforeSemicolon) {
+										numRequiredNewLines = Math.max(numRequiredNewLines, 1);
+									}
+								} else if (nextToken != null && nextToken.getType() != ASTokenTypes.TOKEN_BLOCK_OPEN
+										&& nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
+										&& !skipWhitespaceBeforeSemicolon) {
+									indent = increaseIndent(indent);
+									BlockStackItem item = blockStack.get(blockStack.size() - 1);
+									item.braces = false;
+									numRequiredNewLines = Math.max(numRequiredNewLines, 1);
+								}
+							}
+						}
+						break;
+					}
 					case ASTokenTypes.TOKEN_OPERATOR_INCREMENT:
 					case ASTokenTypes.TOKEN_OPERATOR_DECREMENT: {
 						if (!inControlFlowStatement && prevToken != null
@@ -1211,43 +1253,6 @@
 						}
 						break;
 					}
-					case ASTokenTypes.TOKEN_PAREN_OPEN: {
-						blockStack.add(new BlockStackItem(token));
-						if (inControlFlowStatement) {
-							controlFlowParenStack++;
-						}
-						break;
-					}
-					case ASTokenTypes.TOKEN_PAREN_CLOSE: {
-						if (!blockStack.isEmpty()) {
-							BlockStackItem item = blockStack.get(blockStack.size() - 1);
-							if (item.token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN) {
-								blockStack.remove(item);
-							}
-						}
-						if (inControlFlowStatement) {
-							controlFlowParenStack--;
-							if (controlFlowParenStack <= 0) {
-								inControlFlowStatement = false;
-								controlFlowParenStack = 0;
-								blockOpenPending = true;
-								if (nextToken != null && nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
-									blockStack.remove(blockStack.size() - 1);
-									if (!skipWhitespaceBeforeSemicolon) {
-										numRequiredNewLines = Math.max(numRequiredNewLines, 1);
-									}
-								} else if (nextToken != null && nextToken.getType() != ASTokenTypes.TOKEN_BLOCK_OPEN
-										&& nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
-										&& !skipWhitespaceBeforeSemicolon) {
-									indent = increaseIndent(indent);
-									BlockStackItem item = blockStack.get(blockStack.size() - 1);
-									item.braces = false;
-									numRequiredNewLines = Math.max(numRequiredNewLines, 1);
-								}
-							}
-						}
-						break;
-					}
 					case ASTokenTypes.TOKEN_KEYWORD_CASE: {
 						if (!skipWhitespaceBeforeSemicolon) {
 							requiredSpace = true;
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java b/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
index 0331109..b473097 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
@@ -212,7 +212,7 @@
 		assertEquals(
 		// @formatter:off
 				"function myFunction(p1:String,\n" +
-				"\tp2:Number):void\n" +
+				"\t\tp2:Number):void\n" +
 				"{\n" +
 				"\tstatement;\n" +
 				"\tstatement;\n" +
@@ -289,9 +289,9 @@
 		assertEquals(
 		// @formatter:off
 				"(function myFunction(...rest)\n" +
-				"{\n" +
-				"\tstatement;\n" +
-				"});",
+				"\t{\n" +
+				"\t\tstatement;\n" +
+				"\t});",
 				// @formatter:on
 				result);
 	}
@@ -314,9 +314,9 @@
 		assertEquals(
 		// @formatter:off
 				"identifier(function myFunction(...rest)\n" +
-				"{\n" +
-				"\tstatement;\n" +
-				"}, 123.4);",
+				"\t{\n" +
+				"\t\tstatement;\n" +
+				"\t}, 123.4);",
 				// @formatter:on
 				result);
 	}
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java b/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
index d3ad0ba..8c704b5 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
@@ -440,4 +440,29 @@
 				// @formatter:on
 				result);
 	}
+
+	@Test
+	public void testConditionsOnMultipleLines() {
+		FORMATTER formatter = new FORMATTER();
+		formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+		formatter.placeOpenBraceOnNewLine = false;
+		formatter.insertSpaces = false;
+		String result = formatter.formatActionScriptText(
+		// @formatter:off
+			"if (condition1 &&\n" +
+			"\tcondition2\n" + 
+			") {\n" +
+			"}",
+			// @formatter:on
+			problems
+		);
+		assertEquals(
+		// @formatter:off
+				"if (condition1 &&\n" +
+				"\t\tcondition2\n" +
+				"\t) {\n" +
+				"}",
+				// @formatter:on
+				result);
+	}
 }