public final FieldValue execute(ExecutionContext context) {
        if (requiresInput()) {
            FieldValue input = context.getCurrentValue();
            if (input == null) return null;
        }
        doExecute(context);
        return context.getCurrentValue();
    }
Sets the output type of this and returns the resulting input type, or null if it cannot be
uniquely determined.
Subtypes implement this by calling setOutputType(outputType, requiredType, VerificationContext context).
indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java