code: public Expression construct(final Iterable<? extends Expression> args) {
      Expression.checkTypes(argTypes(), args);
      return new Expression(instanceClass().type(), Feature.NON_NULLABLE) {
        @Override
        protected void doGen(CodeBuilder mv) {
          mv.newInstance(instanceClass().type());
          // push a second reference onto the stack so there is still a reference to the new object
          // after invoking the constructor (constructors are void methods)
          mv.dup();
          for (Expression arg : args) {
            arg.gen(mv);
          }
          mv.invokeConstructor(instanceClass().type(), method());
        }
      };
    }
docs: Returns an expression that constructs a new instance of {@link #instanceClass()} by calling
  this constructor.