implicit class HasWhere(val exp : _) {def where(block : Unit) = macro whereInfix}def whereInfix(c : Context)(block : c.Expr[Unit]) = {import c.universe._val exp = Select(c.prefix.tree, TermName("exp"))val Expr(Block((inner, _))) = blockval newinner = inner :+ expBlock(newinner : _*)}