@Override
  public SelType call(String methodName, SelType[] args) {
    if (args.length == 0 && "getDays".equals(methodName)) {
      return SelLong.of((long) val.getDays());
    } else if (args.length == 2 && "daysBetween".equals(methodName)) {
      return new SelJodaDateTimeDays(
          Days.daysBetween(
              ((SelJodaDateTime) args[0]).getInternalVal(),
              ((SelJodaDateTime) args[1]).getInternalVal()));
    }
    throw new UnsupportedOperationException(
        type()
            + " DO NOT support calling method: "
            + methodName
            + " with args: "
            + Arrays.toString(args));
  }
@Test(expected = UnsupportedOperationException.class)
  public void testInvalidCallArg() {
    one.call("getDays", new SelType[] {SelType.NULL});
  }