@Override
 public void visitFunction(GoloFunction function) {
   if (function.isSynthetic()) {
     newContext();
     declaredParameters(function.getParameterNames());
     function.getBlock().internReferenceTable();
     function.getBlock().accept(this);
     makeArguments(function, context().shouldBeArguments());
     dropUnused(context().shouldBeRemoved());
     dropContext();
   } else {
     function.getBlock().accept(this);
   }
 }