code: @Override
      public void resolve(final ValueStack values) throws Exception
      {
          if (values.size() < 2)
              throw new Exception("missing operands for " + toString());
          try
          {
              final Object[] value = values.ensureSameTypes();
              if (value[0] instanceof LocalDateTime)
              {
                  final LocalDateTime ldt0 = (LocalDateTime) value[0];
                  final LocalDateTime ldt1 = (LocalDateTime) value[1];
                  values.push(new Long(ChronoUnit.DAYS.between(ldt0, ldt1)));
  
              } else if (value[0] instanceof Long)
                  values.push(new Long((Long) value[1] - (Long) value[0]));
              else
                  values.push(new Double((Double) value[1] - (Double) value[0]));
          } catch (final ParseException e)
          {
              e.fillInStackTrace();
              throw new Exception(toString() + "; " + e.getMessage(), e);
          }
      }
docs: {@inheritDoc}