/**
* return the type of an expression, taking meta data into account
*/
protected static ClassNode getType(Expression exp, ClassNode current) {
StatementMeta meta = (StatementMeta) exp.getNodeMetaData(StatementMeta.class);
ClassNode type = null;
if (meta!=null) type = meta.type;
if (type!=null) return type;
if (exp instanceof VariableExpression) {
VariableExpression ve = (VariableExpression) exp;