Bug 577270 - Disambiguation for '->' fails with latest changes from JDT

- refactoring to decouple token constants from own flags
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
index 7206e92..32ee910 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
@@ -7445,7 +7445,9 @@
 //{ObjectTeams: mark callout-to-field in flags as needed by the CompletionAdaptor:
 					if (   kind == CompletionProposal.OT_CALLOUT_GET
 						|| kind == CompletionProposal.OT_CALLOUT_SET)
-						proposal.setAdditionalFlags(isOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameBINDOUT); // pass down for label computation: callout
+						proposal.setAdditionalFlags(isOverride
+								? AbstractMethodMappingDeclaration.BindingOutOverride
+								: AbstractMethodMappingDeclaration.BindingDirectionOut); // pass down for label computation: callout
 // SH}
 					proposal.setReplaceRange(this.startPosition - this.offset, this.endPosition - this.offset);
 					proposal.setTokenRange(this.tokenStart - this.offset, this.tokenEnd - this.offset);
@@ -9689,9 +9691,9 @@
 //{ObjectTeams: callout?
 				switch (curKind) {
 				case CompletionProposal.OT_CALLOUT_OVERRIDE_DECLARATION:
-					proposal.setAdditionalFlags(TerminalTokens.TokenNameCALLOUT_OVERRIDE); break;
+					proposal.setAdditionalFlags(AbstractMethodMappingDeclaration.BindingOutOverride); break;
 				case CompletionProposal.OT_CALLOUT_DECLARATION:
-					proposal.setAdditionalFlags(TerminalTokens.TokenNameBINDOUT); break;
+					proposal.setAdditionalFlags(AbstractMethodMappingDeclaration.BindingDirectionOut); break;
 				}
 // SH}
 				proposal.setReplaceRange(this.startPosition - this.offset, this.endPosition - this.offset);
@@ -10066,7 +10068,9 @@
 							proposal.setAdditionalFlags(((CallinMappingDeclaration)this.currentMethodMapping).callinModifier); // pass down for label computation.
 						} else {
 							boolean isOverride = ((CalloutMappingDeclaration)this.currentMethodMapping).isCalloutOverride();
-							proposal.setAdditionalFlags(isOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameBINDOUT); // pass down for label computation: callout
+							proposal.setAdditionalFlags(isOverride
+									? AbstractMethodMappingDeclaration.BindingOutOverride
+									: AbstractMethodMappingDeclaration.BindingDirectionOut); // pass down for label computation: callout
 						}
 					}
 // SH}
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
index fc21481..737738c 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
@@ -299,7 +299,7 @@
 									return this._bindoutLookahead.getNextToken();
 								}
 								this._calloutSeen = true;
-								return TokenNameSYNTHBINDOUT;
+								return TokenNameBINDOUT;
 							}
 							return TokenNameARROW;
 						}
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
index 7a44312..a69f74c 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
@@ -67,7 +67,6 @@
 import org.eclipse.jdt.internal.compiler.parser.RecoveredStatement;
 import org.eclipse.jdt.internal.compiler.parser.RecoveredType;
 import org.eclipse.jdt.internal.compiler.parser.RecoveredUnit;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
 import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.eclipse.objectteams.otdt.core.compiler.OTNameUtils;
@@ -2255,12 +2254,12 @@
 		long pos= (((long)this.endPosition)<<32) + this.endPosition;
 		// assume: "expr -> <MISSING>"
 		char[] ident= "<MISSING>".toCharArray();  //$NON-NLS-1$
-		int direction= TerminalTokens.TokenNameBINDOUT;
+		int direction= AbstractMethodMappingDeclaration.BindingDirectionOut;
 		if (this.identifierLengthPtr > -1 && this.identifierLengthStack[0] == 1) { // unconsumed single identifier at the bottom of the stack?
 			// it's: "ident <- expr"
 			pos= this.identifierPositionStack[0]; // don't bother with clearing stacks, parsing aborts right now
 			ident= this.identifierStack[0];
-			direction= TerminalTokens.TokenNameBINDIN;
+			direction= AbstractMethodMappingDeclaration.BindingDirectionIn;
 		}
 		pushOnAstStack(new ParameterMapping(direction,
 										    this.expressionStack[this.expressionPtr--],
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
index 2dd4aaa..3092654 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
@@ -2815,8 +2815,6 @@
 	// CalloutKind
 	calloutBinding.calloutKind       = this.intStack[this.intPtr--];
 	calloutBinding.bindingTokenStart = this.intStack[this.intPtr--];
-	if (calloutBinding.calloutKind == TokenNameSYNTHBINDOUT) // as opposed to '=>'
-		this.intPtr--; // from Scanner.currentPosition for LE.arrowPosition
 	calloutBinding.modifierEnd = calloutBinding.bindingTokenStart+1; // assume just '->' or '=>', until we find actual callout modifiers (get/set)
 
 	// MethodSpec
@@ -2958,12 +2956,12 @@
 		int offset = 0;
 		int modifEnd = 0;
 		// look for "<-" (is the wrong modifier left or right of the "<-" ?)
-		boolean isLHS = this.intStack[this.intPtr-3] == TerminalTokens.TokenNameBINDIN;
+		boolean isLHS = this.intStack[this.intPtr-3] == AbstractMethodMappingDeclaration.BindingDirectionIn;
 		if (isLHS) {
 			offset = 4; // modifier is below "<-" end start callinModif (LHS)
 			modifEnd = methodMapping.roleMethodSpec.declarationSourceStart-2;
 		} else {        // "<-" is below modifier (RHS modifier)
-			assert this.intStack[this.intPtr-5] == TerminalTokens.TokenNameBINDIN;
+			assert this.intStack[this.intPtr-5] == AbstractMethodMappingDeclaration.BindingDirectionIn;
 			modifEnd = methodMapping.baseDeclarationSourceStart()-2;
 		}
 		int modifStart = this.intStack[this.intPtr-offset];
@@ -4006,7 +4004,7 @@
 				this.currentElement = this.currentElement.parent;
 			}
 //{ObjectTeams: recover method mapping:
-		} else if (this.currentToken == TokenNameSYNTHBINDOUT) {
+		} else if (this.currentToken == TokenNameBINDOUT) {
 			// TODO(SH): element should have been a callout mapping (missing return type)
 			//           create RecoveredMethodMapping.
 // SH}
@@ -7850,7 +7848,7 @@
 	char[] ident = getIdentifier();
 	long pos = this.identifierPositionStack[this.identifierPtr--];
 	int bindingKind = this.intStack[this.intPtr--];
-	assert(bindingKind == TerminalTokens.TokenNameBINDIN);
+	assert(bindingKind == AbstractMethodMappingDeclaration.BindingDirectionIn);
 	this.intPtr--; // start pos of '->' token (unused)
 
 	pushOnAstStack(new ParameterMapping(bindingKind, expression, new SingleNameReference(ident, pos)));
@@ -7865,7 +7863,7 @@
 	char[] ident = getIdentifier();
 	long pos = this.identifierPositionStack[this.identifierPtr--];
 
-	pushOnAstStack(new ParameterMapping(TerminalTokens.TokenNameBINDOUT, expression, new SingleNameReference(ident, pos)));
+	pushOnAstStack(new ParameterMapping(AbstractMethodMappingDeclaration.BindingDirectionOut, expression, new SingleNameReference(ident, pos)));
 }
 private void checkMisplacedSemiInParameterMapping() {
 	if (this.currentToken == TerminalTokens.TokenNameSEMICOLON)
@@ -9149,7 +9147,7 @@
 		    consumeParameterMappingList();
 			break;
 
-    case 344 : if (DEBUG) { System.out.println("ParameterMapping ::= Expression SYNTHBINDOUT Identifier"); }  //$NON-NLS-1$
+    case 344 : if (DEBUG) { System.out.println("ParameterMapping ::= Expression BINDOUT Identifier"); }  //$NON-NLS-1$
 		    consumeParameterMappingOut();
 			break;
 
@@ -11284,8 +11282,7 @@
 protected void consumeLambdaHeader() {
 	// LambdaHeader ::= LambdaParameters '->'  Synthetic/fake production with a synthetic non-terminal. Body not seen yet.
 
-//{ObjectTeams: two unused ints from consumeToken() (for TokenNameARROW, for use as TokenNameBINDOUT):
-	this.intPtr-=2;
+//{ObjectTeams: fix position (see also Commit 1725edbd):
 	int arrowPosition = this.intStack[this.intPtr--] - 1; // saved during consumeToken()
 	/*
 	int arrowPosition = this.scanner.currentPosition - 1;
@@ -12540,11 +12537,8 @@
 	//System.out.println(this.scanner.toStringAction(type));
 	switch (type) {
 		case TokenNameARROW:
-//{ObjectTeams: for alias TokenNameSYNTHBINDOUT
-		case TokenNameSYNTHBINDOUT:
+//{ObjectTeams: save arrow position:
 			pushOnIntStack(this.scanner.currentPosition); // for LE.arrowPosition
-			pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
-			pushOnIntStack(type);
 /* orig: (now called from rule EnterLambda):
 			if (!this.caseFlagSet && this.scanner.lookBack[0] != TokenNamedefault)
 				consumeLambdaHeader();
@@ -12611,9 +12605,16 @@
 			pushOnIntStack(this.scanner.startPosition);
 			break;
 		case TokenNameCALLOUT_OVERRIDE :
+			pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
+			pushOnIntStack(AbstractMethodMappingDeclaration.BindingOutOverride);
+			break;
 		case TokenNameBINDIN:
 			pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
-			pushOnIntStack(type);
+			pushOnIntStack(AbstractMethodMappingDeclaration.BindingDirectionIn);
+			break;
+		case TokenNameBINDOUT:
+			pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
+			pushOnIntStack(AbstractMethodMappingDeclaration.BindingDirectionOut);
 			break;
 // SH}
 		case TokenNameabstract :
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java
index b3a73d6..f7ffc1f 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java
@@ -153,7 +153,7 @@
 		switch (nextToken) {
 		case TerminalTokens.TokenNameLBRACE:   // it's a real method
 		case TerminalTokens.TokenNameBINDIN:   // it's the start of a new callin mapping
-		case TerminalTokens.TokenNameSYNTHBINDOUT:  // it's the start of a new callout mapping
+		case TerminalTokens.TokenNameBINDOUT:  // it's the start of a new callout mapping
 			// add real method or mapping to the class:
 			return super.add(methodDeclaration, bracketBalanceValue);
 		}
@@ -220,7 +220,7 @@
 	// check whether fieldDeclaration is a misread method spec rather than a real field
 	switch (parser().currentToken) {
 	case TerminalTokens.TokenNameBINDIN:   // it's the start of a new callin mapping
-	case TerminalTokens.TokenNameSYNTHBINDOUT:  // it's the start of a new callout mapping
+	case TerminalTokens.TokenNameBINDOUT:  // it's the start of a new callout mapping
 		// ignore misread field:
 		return this;
 	}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
index beb8060..69a72ee 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
@@ -130,7 +130,7 @@
     /**
      * A little state machine for lookahead of up-to 2 tokens.
      * This is used to disambiguate whether a '->' inside parameter mappings is
-     * an ARROW (lambda) or a SYNTHBINDOUT (parameter mapping role-to-base)
+     * an ARROW (lambda) or a BINDOUT (parameter mapping role-to-base)
      */
     protected class BindoutLookahead {
 
@@ -172,7 +172,7 @@
 						case TerminalTokens.TokenNameCOMMA :	  // more mappings?
 						case TerminalTokens.TokenNameSEMICOLON :  // more mappings? (wrong delimiter, though)
 						case TerminalTokens.TokenNameRBRACE :	  // end of parameter mappings?
-							return TokenNameSYNTHBINDOUT; 		  // match, tweak '->' to mean SYNTHBINDOUT
+							return TokenNameBINDOUT; 			  // match, tweak '->' to mean BINDOUT
 						default:
 							return TerminalTokens.TokenNameARROW; // no match, '->' should be interpreted as normal
 					}
@@ -240,7 +240,7 @@
     		return baseIsKeyword(false);
     	case TokenNameas:
     	case TokenNameBINDIN:
-    	case TokenNameSYNTHBINDOUT:
+    	case TokenNameBINDOUT:
     	case TokenNamecallin:
     	case TokenNameplayedBy:
     	case TokenNameprecedence:
@@ -1796,7 +1796,7 @@
 									return this._bindoutLookahead.getNextToken();
 								}
 								this._calloutSeen = true;
-								return TokenNameSYNTHBINDOUT;
+								return TokenNameBINDOUT;
 							}
 							return TokenNameARROW;
 						}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
index 050dcae..ce75176 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
@@ -191,10 +191,7 @@
 							TokenNameATOT = 128,
 							TokenNameBINDIN = 81,
 							TokenNameCALLOUT_OVERRIDE = 97,
-							TokenNameSYNTHBINDOUT = 73,
+							TokenNameBINDOUT = 73,
 							TokenNameEOF = 69,
 							TokenNameERROR = 154;
-
-	// This alias is statically inserted by GenerateParserScript.java:
-	int TokenNameBINDOUT = TokenNameARROW;
 }
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java
index 70b7579..837532b 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java
@@ -22,9 +22,6 @@
  **********************************************************************/
 package org.eclipse.objectteams.otdt.internal.core.compiler.ast;
 
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDIN;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDOUT;
-
 import java.util.Arrays;
 
 import org.eclipse.jdt.core.compiler.CategorizedProblem;
@@ -51,7 +48,6 @@
 import org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
 import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.eclipse.jdt.internal.compiler.parser.Parser;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
 import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit;
 import org.eclipse.jdt.internal.compiler.problem.AbortMethod;
@@ -114,6 +110,10 @@
 	public Javadoc javadoc;
 	public Annotation[] annotations;
 	public boolean hasParsedParamMappings= false;
+	// distinction '->' / '=>' / '<-' :
+	public static final int BindingDirectionOut = 1;
+	public static final int BindingOutOverride = 2;
+	public static final int BindingDirectionIn = 3;
 
 	public AbstractMethodMappingDeclaration(CompilationResult compilationResult)
 	{
@@ -376,7 +376,7 @@
 									continue;
 								}
 							}
-							if (   !methodSpec.checkBaseReturnType(this.scope, isCallin()?TokenNameBINDOUT:TokenNameBINDIN)
+							if (   !methodSpec.checkBaseReturnType(this.scope, isCallin()?BindingDirectionOut:BindingDirectionIn)
 								|| !methodSpec.checkParameterTypes(this.scope, true))
 								continue;
 							// translation bits are already initialized in the constructor of MethodSpec.
@@ -599,13 +599,13 @@
 		if (this.mappings != null)
 		{
 			for (ParameterMapping mapping : this.mappings)
-				if (mapping.direction == TerminalTokens.TokenNameBINDIN) // ident <- expr
+				if (mapping.direction == BindingDirectionIn) // ident <- expr
 					mapping.expression.traverse(new BaseScopeMarker(), this.scope);
 
 			// check 4.4(c) - sentence 2:
 			if (isCallin() && !isReplaceCallin())
 				for (ParameterMapping mapping : this.mappings)
-					if (mapping.direction == TerminalTokens.TokenNameBINDOUT) // expr -> ident
+					if (mapping.direction == BindingDirectionOut) // expr -> ident
 						parser.problemReporter().illegalBindingDirectionNonReplaceCallin(mapping);
 
 			{ // prepare positions:
@@ -660,7 +660,7 @@
 	{
 		Expression mappedArgExpr = null;
 		Integer basePos = null;
-		int bindingDirection= isCallin() ? TerminalTokens.TokenNameBINDIN : TerminalTokens.TokenNameBINDOUT;
+		int bindingDirection= isCallin() ? BindingDirectionIn: BindingDirectionOut;
 		// look for a mapping:
 		for (int i=0; i<this.mappings.length; i++)
 		{
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java
index d777cc9..420e775 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java
@@ -22,8 +22,6 @@
  **********************************************************************/
 package org.eclipse.objectteams.otdt.internal.core.compiler.ast;
 
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDIN;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDOUT;
 import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameafter;
 import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamebefore;
 import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamereplace;
@@ -328,7 +326,7 @@
 						this.roleMethodSpec.parameters[j]= roleParam;
 						continue;
 					}
-					if (RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, TokenNameBINDIN))
+					if (RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, BindingDirectionIn))
 					{
 						this.roleMethodSpec.parameters[j]= roleParam;
 						compatibilityViaBaseAnchor= true;
@@ -398,7 +396,7 @@
 					if (!hasReportedError && baseLeaf.isCompatibleWith(roleLeaf)) {
 						if (isReplaceCallin() && !isTypeVariable) {
 							boolean twowayCompatible =  compatibilityViaBaseAnchor
-								? RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, TokenNameBINDOUT)
+								? RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, AbstractMethodMappingDeclaration.BindingDirectionOut)
 								: roleLeaf.isCompatibleWith(baseLeaf);
 							if (!twowayCompatible) {
 								// requires two-way compatibility (see additional paragraph in 4.5(d))
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
index d99eed7..0fdda4f 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
@@ -42,8 +42,6 @@
 import org.eclipse.objectteams.otdt.internal.core.compiler.util.AstGenerator;
 import org.eclipse.objectteams.otdt.internal.core.compiler.util.RoleTypeCreator;
 
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDOUT;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCALLOUT_OVERRIDE;
 import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameget;
 
 
@@ -72,9 +70,7 @@
 	}
 
 	public void setCalloutKind(boolean isOverride) {
-		this.calloutKind = isOverride ?
-								TokenNameCALLOUT_OVERRIDE :
-								TokenNameBINDOUT;
+		this.calloutKind = isOverride ? BindingOutOverride : BindingDirectionOut;
 
 	}
 
@@ -126,7 +122,7 @@
 					}
 					TypeBinding baseParam = baseParams[j];
 					if (!roleParam.isCompatibleWith(baseParam)) {
-						if (!RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseParam, roleParam, TokenNameBINDOUT))
+						if (!RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseParam, roleParam, AbstractMethodMappingDeclaration.BindingDirectionOut))
 						{
 							// try auto(un)boxing:
 							if (this.scope.isBoxingCompatibleWith(roleParam, baseParam))
@@ -390,7 +386,7 @@
     {
     	printIndent(indent,output);
         this.roleMethodSpec.print(0,output);
-        if(this.calloutKind==TokenNameCALLOUT_OVERRIDE)
+        if(this.calloutKind==BindingOutOverride)
             output.append(" => "); //$NON-NLS-1$
         else
             output.append(" -> "); //$NON-NLS-1$
@@ -438,7 +434,7 @@
 	@Override
 	public boolean isCalloutOverride()
 	{
-		return this.calloutKind==TokenNameCALLOUT_OVERRIDE;
+		return this.calloutKind==BindingOutOverride;
 	}
 
     public boolean isCalloutToField()
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java
index 572d238..562d14d 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java
@@ -31,7 +31,6 @@
 import org.eclipse.jdt.internal.compiler.ast.Expression;
 import org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
 import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
 
 /**
  * NEW for OTDT:
@@ -52,7 +51,7 @@
 		this.direction=direction;
 		this.expression=expression;
 		this.ident=ident;
-		if (direction == TerminalTokens.TokenNameBINDIN) {
+		if (direction == AbstractMethodMappingDeclaration.BindingDirectionIn) {
 			this.sourceStart= ident.sourceStart;
 			this.sourceEnd=   expression.sourceEnd;
 		} else {
@@ -63,7 +62,7 @@
 
 	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
-		if((this.direction==TerminalTokens.TokenNameBINDIN))// == CharOperation.equals(ident, IOTConstants.RESULT))
+		if((this.direction==AbstractMethodMappingDeclaration.BindingDirectionIn))// == CharOperation.equals(ident, IOTConstants.RESULT))
 		{
 			output.append(this.ident.token);
 			output.append(" <- "); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
index 1f601a6..73db33c 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
@@ -125,7 +125,7 @@
 	{
 		super(role);
 		this._roleScope = role.getAst().scope; // we definitely have an AST here
-		this.bindingDirection = TerminalTokens.TokenNameBINDIN;
+		this.bindingDirection = AbstractMethodMappingDeclaration.BindingDirectionIn;
 	}
 	/**
 	 * Main entry from Dependencies.
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
index a43938b..3adf20e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
@@ -142,7 +142,7 @@
 	{
 		this._role = role;
 		this._roleScope = role.getAst().scope; // we definitely have an AST here
-		this.bindingDirection = TerminalTokens.TokenNameBINDIN;
+		this.bindingDirection = AbstractMethodMappingDeclaration.BindingDirectionIn;
 
 		AbstractMethodMappingDeclaration[] methodMappings =	this._role.getAst().callinCallouts;
 		if(methodMappings == null || methodMappings.length == 0)
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java
index 44353dc..507911e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java
@@ -57,7 +57,6 @@
 import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
 import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
@@ -145,7 +144,7 @@
 	public CalloutImplementor(RoleModel role)
 	{
 		super(role);
-	    this.bindingDirection = TerminalTokens.TokenNameBINDOUT;
+	    this.bindingDirection = AbstractMethodMappingDeclaration.BindingDirectionOut;
 	}
 
 	private boolean transform(boolean needMethodBodies)
@@ -827,7 +826,7 @@
             for (int i = 0; i < mappings.length; i++) {
             	if (CharOperation.equals(mappings[i].ident.token, IOTConstants.RESULT))
             	{
-            		if (mappings[i].direction == TerminalTokens.TokenNameBINDOUT)
+            		if (mappings[i].direction == AbstractMethodMappingDeclaration.BindingDirectionOut)
             		{
             			problemReporter.wrongBindingDirection(
             					calloutMappingDeclaration, mappings[i]);
@@ -851,7 +850,7 @@
             	{
             		if (!mappings[i].isUsedFor(calloutMappingDeclaration.roleMethodSpec))
             		{
-	                    if (mappings[i].direction == TerminalTokens.TokenNameBINDOUT)
+	                    if (mappings[i].direction == AbstractMethodMappingDeclaration.BindingDirectionOut)
 	                    {
 	                    	// TODO(SH): can this actually happen? Clover says: YES.
 	                    	// would have to be an inexistent param ident?
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java
index 9d95205..5c4c3c4 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java
@@ -39,7 +39,6 @@
 import org.eclipse.jdt.internal.compiler.lookup.Scope;
 import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
 import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
 import org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration;
 import org.eclipse.objectteams.otdt.internal.core.compiler.ast.CallinMappingDeclaration;
@@ -286,13 +285,13 @@
 	        	pos     = (((long)argument.sourceStart) << 32) + argument.sourceEnd;
 	        	argModifiers = argument.modifiers;
 	        	// for callout prefer source-level args (from method spec) to avoid resolved/unresolved conflicts downstream
-	        	if (this.bindingDirection == TerminalTokens.TokenNameBINDOUT)
+	        	if (this.bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionOut)
 	        		argTypeReference = AstClone.copyTypeReference(argument.type);
 			} else {
 				argName = (IOTConstants.OT_DOLLAR_ARG + idx).toCharArray();
 			}
 			TypeBinding argType = arguments[idx];
-			if (this.bindingDirection == TerminalTokens.TokenNameBINDIN) { // only relevant for callin
+			if (this.bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionIn) { // only relevant for callin
 				argTypeReference = getAnchoredTypeReference(gen, baseSideAnchor, argType);
 			}
 			if (argTypeReference == null) {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java
index 9d03b3a..39dfe7c 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java
@@ -71,7 +71,7 @@
         {
             boolean isResultDir = false;
             if (this._methodMapping.isCallin()) {
-                isResultDir = this._bindingDirection == TerminalTokens.TokenNameBINDOUT;
+                isResultDir = this._bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionOut;
                 if (   !isResultDir
                 	&& 	((CallinMappingDeclaration)this._methodMapping).callinModifier
 					     == TerminalTokens.TokenNameafter)
@@ -79,7 +79,7 @@
                 	isResultDir = true;
                 }
             } else
-                isResultDir = this._bindingDirection == TerminalTokens.TokenNameBINDIN;
+                isResultDir = this._bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionIn;
             if (isResultDir) {
             	AstGenerator gen = new AstGenerator(ref.sourceStart, ref.sourceEnd);
                 ResultReference resultRef = gen.resultReference(ref, this._methodMapping);
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java
index ba65081..5d54580 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java
@@ -33,10 +33,10 @@
 import org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
 import org.eclipse.jdt.internal.compiler.impl.CompilerOptions.WeavingScheme;
 import org.eclipse.jdt.internal.compiler.lookup.*;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
 import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
 import org.eclipse.objectteams.otdt.core.exceptions.InternalCompilerError;
+import org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration;
 import org.eclipse.objectteams.otdt.internal.core.compiler.ast.PotentialLowerExpression;
 import org.eclipse.objectteams.otdt.internal.core.compiler.ast.TypeAnchorReference;
 import org.eclipse.objectteams.otdt.internal.core.compiler.control.Dependencies;
@@ -1620,7 +1620,7 @@
 		if (baseType instanceof ReferenceBinding) {
 			TypeBinding baseAnchoredBase = maybeInstantiateFromPlayedBy(
 					scope, (ReferenceBinding)baseType);
-			if (bindDir == TerminalTokens.TokenNameBINDIN) {
+			if (bindDir == AbstractMethodMappingDeclaration.BindingDirectionIn) {
 				if (baseAnchoredBase.isCompatibleWith(roleType))
 					return true;
 			} else {
diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java
index 5164ab9..bbad1ce 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java
@@ -18,6 +18,9 @@
 
 package org.eclipse.jdt.core.dom;
 
+import static org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration.BindingDirectionIn;
+import static org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration.BindingDirectionOut;
+
 import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Comparator;
@@ -6100,7 +6103,7 @@
 			int token;
 			while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) {
 				switch(token) {
-					case TerminalTokens.TokenNameBINDIN://225
+					case TerminalTokens.TokenNameBINDIN:
 						return this.scanner.startPosition;
 				}
 			}
@@ -7613,10 +7616,10 @@
 
 		result.setExpression(convert(parameterMapping.expression));
 
-		if (parameterMapping.direction == TerminalTokens.TokenNameBINDIN)
+		if (parameterMapping.direction == BindingDirectionIn)
 			result.setDirection("<-");
 
-		if (parameterMapping.direction == TerminalTokens.TokenNameBINDOUT)
+		if (parameterMapping.direction == BindingDirectionOut)
 			result.setDirection("->");
 
 		result.setIdentifier(convert(parameterMapping.ident));
diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
index e8465a0..2577755 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
@@ -5008,7 +5008,7 @@
 		MethodBindingOperator bindingOp = node.bindingOperator();
 		int oldBindingKind= ((Integer) getOriginalValue(bindingOp, MethodBindingOperator.BINDING_KIND_PROPERTY)).intValue();
 		boolean isCalloutOverride = (oldBindingKind == MethodBindingOperator.KIND_CALLOUT_OVERRIDE);
-		int typeToken= isCalloutOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameSYNTHBINDOUT;
+		int typeToken= isCalloutOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameBINDOUT;
 		try {
 			getScanner().readToToken(typeToken, node.getStartPosition());
 		} catch (CoreException e) {
diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java
index aed39a8..36d8172 100644
--- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java
+++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java
@@ -1108,7 +1108,7 @@
 	}
 	@Override
 	public boolean visit(CalloutMappingDeclaration node) {
-		handleTokenAfter(node.getRoleMappingElement(), node.isCalloutOverride() ? TokenNameCALLOUT_OVERRIDE : TokenNameSYNTHBINDOUT, true, true);
+		handleTokenAfter(node.getRoleMappingElement(), node.isCalloutOverride() ? TokenNameCALLOUT_OVERRIDE : TokenNameBINDOUT, true, true);
 		if (node.hasParameterMapping())
 			handleTokenAfter(node.getBaseMappingElement(), TokenNamewith, true, true);
 		return true;
@@ -1137,7 +1137,7 @@
 		if (node.isBindIN())
 			handleTokenAfter(node.getIdentifier(), TokenNameBINDIN, true, true);
 		else
-			handleTokenBefore(node.getIdentifier(), TokenNameSYNTHBINDOUT, true, true);
+			handleTokenBefore(node.getIdentifier(), TokenNameBINDOUT, true, true);
 		return true;
 	}
 	@Override
diff --git a/org.eclipse.jdt.core/grammar/java.g b/org.eclipse.jdt.core/grammar/java.g
index e5b2a18..f66b9e7 100644
--- a/org.eclipse.jdt.core/grammar/java.g
+++ b/org.eclipse.jdt.core/grammar/java.g
@@ -136,7 +136,7 @@
 	ATOT
 	BINDIN
 	CALLOUT_OVERRIDE
-	SYNTHBINDOUT
+	BINDOUT
 -- Markus Witte}
 --    BodyMarker
 
@@ -1156,7 +1156,7 @@
 /.$putCase consumeCalloutParameterMappingsInvalid(); $break ./
 
 -- SYMBOLS:
-CalloutKind -> SYNTHBINDOUT
+CalloutKind -> BINDOUT
 CalloutKind -> '=>'
 /:$readableName CalloutKind:/
 
@@ -1198,7 +1198,7 @@
 /:$readableName CalloutParameterMappingList:/
 
 
-ParameterMapping ::= Expression SYNTHBINDOUT 'Identifier'
+ParameterMapping ::= Expression BINDOUT 'Identifier'
 /.$putCase consumeParameterMappingOut(); $break ./
 
 ParameterMapping ::= 'Identifier' '<-' ForceBaseIsIdentifier Expression RestoreBaseKeyword
@@ -3852,7 +3852,7 @@
 ATOT ::= '@'
 BINDIN ::= '<-'
 CALLOUT_OVERRIDE ::= '=>'
-SYNTHBINDOUT ::= '->'
+BINDOUT ::= '->'
 -- Markus Witte}
 
 $end
diff --git a/org.eclipse.jdt.core/scripts/GenerateParserScript.java b/org.eclipse.jdt.core/scripts/GenerateParserScript.java
index 495319a..8089bf8 100644
--- a/org.eclipse.jdt.core/scripts/GenerateParserScript.java
+++ b/org.eclipse.jdt.core/scripts/GenerateParserScript.java
@@ -83,13 +83,6 @@
 			javasymText = javasymText.replace("TokenName$eof", "TokenNameEOF");
 			javasymText = javasymText.replace("TokenName$error", "TokenNameERROR");
 			javasymText = javasymText.replace("TokenNamenon-sealed", "TokenNamenon_sealed");
-//{ObjectTeams:
-			javasymText = javasymText.replace("}",
-					"\n" +
-					"	// This alias is statically inserted by GenerateParserScript.java:\n" + 
-					"	int TokenNameBINDOUT = TokenNameARROW;\n" + 
-					"}");
-// SH}
 			Files.write(terminalTokensFile.toPath(), (terminalTokensProlog + "\tint " + javasymText).getBytes());
 		}
 
diff --git a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java
index c62f65f..3b966b0 100644
--- a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java
@@ -82,6 +82,7 @@
 import org.eclipse.objectteams.otdt.core.IRoleType;
 import org.eclipse.objectteams.otdt.core.OTModelManager;
 import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
+import org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration;
 import org.eclipse.objectteams.otdt.ui.ImageConstants;
 import org.eclipse.objectteams.otdt.ui.ImageManager;
 import org.eclipse.osgi.util.NLS;
@@ -221,10 +222,10 @@
 			boolean isCallin= true;
 			boolean isOverride= false;
 			switch(bindingModifier) {
-			case TerminalTokens.TokenNameCALLOUT_OVERRIDE:
+			case AbstractMethodMappingDeclaration.BindingOutOverride:
 				isOverride= true;
 				//$FALL-THROUGH$
-			case TerminalTokens.TokenNameBINDOUT:
+			case AbstractMethodMappingDeclaration.BindingDirectionOut:
 				isCallin= false;
 				break;
 			// otherwise it's a callin with details in bindingModifier
@@ -281,7 +282,7 @@
 			LabelProvider labelProvider= getLabelProvider();
   //{ObjectTeams: callout-to-field:
 			StyledString label= labelProvider.createFieldDescLabel(proposal);
-			Image image= getImage(labelProvider.createMappingImageDescriptor(TerminalTokens.TokenNameBINDOUT));
+			Image image= getImage(labelProvider.createMappingImageDescriptor(AbstractMethodMappingDeclaration.BindingDirectionOut));
   // SH}
 			int relevance= computeRelevance(proposal);
 
@@ -326,8 +327,8 @@
 				return ImageManager.getSharedInstance().getDescriptor(ImageConstants.CALLINBINDING_REPLACE_IMG);
 			case TerminalTokens.TokenNameafter:
 				return ImageManager.getSharedInstance().getDescriptor(ImageConstants.CALLINBINDING_AFTER_IMG);
-			case TerminalTokens.TokenNameBINDOUT:
-			case TerminalTokens.TokenNameCALLOUT_OVERRIDE:
+			case AbstractMethodMappingDeclaration.BindingDirectionOut:
+			case AbstractMethodMappingDeclaration.BindingOutOverride:
 				return ImageManager.getSharedInstance().getDescriptor(ImageConstants.CALLOUTBINDING_IMG);
 			default: 
 				return null;