exp = this.expressionStack[this.expressionPtr--];
this.expressionLengthPtr --;
TypeReference[] bounds = new TypeReference[length = this.expressionLengthStack[this.expressionLengthPtr]];
System.arraycopy(this.expressionStack, this.expressionPtr -= (length - 1), bounds, 0, length);
this.expressionStack[this.expressionPtr] =
cast = new CastExpression(
exp,
createIntersectionCastTypeReference(bounds));
this.expressionLengthStack[this.expressionLengthPtr] = 1;
updateSourcePosition(cast);
cast.sourceEnd=exp.sourceEnd;