fix regressions:
- PublicScanner to map BINDOUT to ARROW
- fix ASTStructuralPropertyTest (see https://bugs.eclipse.org/578608)
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PublicScannerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PublicScannerTest.java
index 7f41f28..25e2b6b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PublicScannerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PublicScannerTest.java
@@ -72,6 +72,7 @@
 		map.put(TerminalTokens.TokenNameAT308, TerminalTokens.TokenNameAT);
 //{ObjectTeams:
 		map.put(TerminalTokens.TokenNameATOT, TerminalTokens.TokenNameAT);
+		map.put(TerminalTokens.TokenNameBINDOUT, TerminalTokens.TokenNameARROW);
 // SH}
 		SYNTHETIC_REPLACE_TOKENS = Collections.unmodifiableMap(map);
 
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java
index b6de7ef..52fb77e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java
@@ -449,7 +449,7 @@
 /* orig:
 		assertEquals("Wrong last known type", 109, hi); // last known one
   :giro */
-		assertEquals("Wrong last known type", 125, hi); // last known one
+		assertEquals("Wrong last known type", 127, hi); // last known one
 // jwl}
 		assertEquals("Wrong number of distinct types",  hi, classes.size()); // all classes are distinct
 	}
diff --git a/org.eclipse.jdt.core/.settings/.api_filters b/org.eclipse.jdt.core/.settings/.api_filters
index 00fbc54..5eda8a2 100644
--- a/org.eclipse.jdt.core/.settings/.api_filters
+++ b/org.eclipse.jdt.core/.settings/.api_filters
@@ -24,6 +24,13 @@
                 <message_argument value="113"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="BASE_CALL_MESSAGE_SEND"/>
+                <message_argument value="117"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -31,6 +38,13 @@
                 <message_argument value="111"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="BASE_CONSTRUCTOR_INVOCATION"/>
+                <message_argument value="115"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -38,6 +52,13 @@
                 <message_argument value="107"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="CALLIN_MAPPING_DECLARATION"/>
+                <message_argument value="111"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -45,6 +66,13 @@
                 <message_argument value="108"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="CALLOUT_MAPPING_DECLARATION"/>
+                <message_argument value="112"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -52,6 +80,13 @@
                 <message_argument value="114"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="FIELD_ACCESS_SPEC"/>
+                <message_argument value="118"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -59,6 +94,13 @@
                 <message_argument value="120"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="GUARD_PREDICATE_DECLARATION"/>
+                <message_argument value="124"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -66,6 +108,13 @@
                 <message_argument value="109"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="LIFTING_TYPE"/>
+                <message_argument value="113"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -73,6 +122,13 @@
                 <message_argument value="121"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="METHOD_BINDING_OPERATOR"/>
+                <message_argument value="125"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -80,6 +136,13 @@
                 <message_argument value="106"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="METHOD_SPEC"/>
+                <message_argument value="110"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -87,6 +150,13 @@
                 <message_argument value="112"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="PARAMETER_MAPPING"/>
+                <message_argument value="116"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -94,6 +164,13 @@
                 <message_argument value="119"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="PRECEDENCE_DECLARATION"/>
+                <message_argument value="123"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -101,6 +178,13 @@
                 <message_argument value="115"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="ROLE_TYPE_DECLARATION"/>
+                <message_argument value="119"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -108,6 +192,13 @@
                 <message_argument value="117"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="TSUPER_CONSTRUCTOR_INVOCATION"/>
+                <message_argument value="121"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -115,6 +206,13 @@
                 <message_argument value="116"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="TSUPER_MESSAGE_SEND"/>
+                <message_argument value="120"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -122,6 +220,13 @@
                 <message_argument value="118"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="TYPE_ANCHOR"/>
+                <message_argument value="122"/>
+            </message_arguments>
+        </filter>
         <filter comment="adjust constants after additions in JDT" id="388194388">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
@@ -129,6 +234,13 @@
                 <message_argument value="110"/>
             </message_arguments>
         </filter>
+        <filter comment="necessary update of constants for OT node types" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.dom.ASTNode"/>
+                <message_argument value="WITHIN_STATEMENT"/>
+                <message_argument value="114"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="dom/org/eclipse/jdt/core/dom/AbstractTagElement.java" type="org.eclipse.jdt.core.dom.AbstractTagElement">
         <filter id="576725006">
@@ -154,6 +266,12 @@
         </filter>
     </resource>
     <resource path="model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java" type="org.eclipse.jdt.core.compiler.ITerminalSymbols">
+        <filter comment="public scanner cannot distinguish ARROW vs. BINDOUT, remove the latter constant" id="405864542">
+            <message_arguments>
+                <message_argument value="org.eclipse.jdt.core.compiler.ITerminalSymbols"/>
+                <message_argument value="TokenNameBINDOUT"/>
+            </message_arguments>
+        </filter>
         <filter comment="token 'readonly' has long been deprecated as it is not supported" id="405864542">
             <message_arguments>
                 <message_argument value="org.eclipse.jdt.core.compiler.ITerminalSymbols"/>
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
index b2b913a..e2cf02c 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
@@ -228,7 +228,6 @@
     TokenNameafter = 5010,
     TokenNamebefore = 5011,
     TokenNameBINDIN = 5012,
-    TokenNameBINDOUT = 5013,
     TokenNameCALLOUT_OVERRIDE = 5014,
 	TokenNameget = 5016,
 	TokenNameset = 5017,
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java
index aae3012..d14a396 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java
@@ -141,7 +141,7 @@
 			case TerminalTokens.TokenNameAT308DOTDOTDOT : nextToken = ITerminalSymbols.TokenNameAT; break;
 			case TerminalTokens.TokenNameATOT : nextToken = ITerminalSymbols.TokenNameAT; break;
 			case TerminalTokens.TokenNameBINDIN : nextToken = ITerminalSymbols.TokenNameBINDIN; break;
-			case TerminalTokens.TokenNameBINDOUT : nextToken = ITerminalSymbols.TokenNameBINDOUT; break;
+			case TerminalTokens.TokenNameBINDOUT : nextToken = ITerminalSymbols.TokenNameARROW; break;
 			case TerminalTokens.TokenNameBeginCaseElement : nextToken = getNextToken(); break;
 			case TerminalTokens.TokenNameBeginCaseExpr : nextToken = getNextToken(); break;
 			case TerminalTokens.TokenNameBeginIntersectionCast : nextToken = getNextToken(); break;