} else if (rightOp instanceof Local) {
Local local = (Local) rightOp;
_updateTypeInAssignment(leftOp, in.get(local), out);
} else if (rightOp instanceof NewExpr) {
NewExpr newExpr = (NewExpr) rightOp;
RefType type = newExpr.getBaseType();
SootClass castClass = type.getSootClass();
// If we are creating a Token type...
if (SootUtilities.derivesFrom(castClass,
PtolemyUtilities.tokenClass)) {
// Then the rightOp of the expression is the type of the
// constructor.
_updateTypeInAssignment(leftOp, PtolemyUtilities
.getTokenTypeForSootType(type), out);
} else {
// Otherwise there is nothing to be done.
}
} else if (rightOp instanceof NewArrayExpr) {
// Since arrays are aliasable, we must update their types.
NewArrayExpr newExpr = (NewArrayExpr) rightOp;
Type type = newExpr.getBaseType();
RefType tokenType = PtolemyUtilities.getBaseTokenType(type);
if (tokenType != null) {
_updateTypeInAssignment(leftOp, PtolemyUtilities
.getTokenTypeForSootType(tokenType), out);