@Override
  public SelType call(String methodName, SelType[] args) {
    if (args.length == 0) {
      if ("getAsText".equals(methodName)) {
        return SelString.of(val.getAsText(Locale.US));
      } else if ("withMinimumValue".equals(methodName)) {
        return SelJodaDateTime.of(val.withMinimumValue());
      } else if ("withMaximumValue".equals(methodName)) {
        return SelJodaDateTime.of(val.withMaximumValue());
      } else if ("get".equals(methodName)) {
        return SelLong.of((long) val.get());
      }
    }
    throw new UnsupportedOperationException(
        type()
            + " DO NOT support calling method: "
            + methodName
            + " with args: "
            + Arrays.toString(args));
  }
@Test(expected = UnsupportedOperationException.class)
  public void testInvalidCallArg() {
    one.call("getAsText", new SelType[] {SelType.NULL});
  }