@Override public Type typecheck(Environment env, Optional<Type> expected) { Type lastType = new Unit(); for (TypedAST t : exps) { if (t == null) continue; lastType = t.typecheck(env, (exps.getLast() == t) ? expected : Optional.empty()); if (t instanceof EnvironmentExtender) env = ((EnvironmentExtender) t).extend(env, env); } retType = lastType; return lastType; }