public CompiledPipeline.CompiledExecution buildExecution() {
        return buildExecution(false);
    }
@SuppressWarnings({"unchecked"})
    @Test
    public void equalityCheckOnCompositeField() throws Exception {
        final ConfigVariableExpander cve = ConfigVariableExpander.withoutSecret(EnvironmentVariableProvider.defaultProvider());
        final PipelineIR pipelineIR = ConfigCompiler.configToPipelineIR(
                IRHelpers.toSourceWithMetadata("input {mockinput{}} filter { if 4 == [list] { mockaddfilter {} } if 5 == [map] { mockaddfilter {} } } output {mockoutput{} }"),
                false,
                cve);
        final Collection<String> s = new ArrayList<>();
        s.add("foo");
        final Map<String, Object> m = new HashMap<>();
        m.put("foo", "bar");
        final JrubyEventExtLibrary.RubyEvent testEvent =
                JrubyEventExtLibrary.RubyEvent.newRubyEvent(RubyUtil.RUBY, new Event());
        testEvent.getEvent().setField("list", ConvertedList.newFromList(s));
        testEvent.getEvent().setField("map", ConvertedMap.newFromMap(m));

        final Map<String, Supplier<IRubyObject>> filters = new HashMap<>();
        filters.put("mockaddfilter", () -> ADD_FIELD_FILTER);
        new CompiledPipeline(
                pipelineIR,
                new CompiledPipelineTest.MockPluginFactory(
                        Collections.singletonMap("mockinput", () -> null),
                        filters,
                        Collections.singletonMap("mockoutput", mockOutputSupplier())
                )
        ).buildExecution().compute(RubyUtil.RUBY.newArray(testEvent), false, false);
        final Collection<JrubyEventExtLibrary.RubyEvent> outputEvents = EVENT_SINKS.get(runId);
        MatcherAssert.assertThat(outputEvents.size(), CoreMatchers.is(1));
        MatcherAssert.assertThat(outputEvents.contains(testEvent), CoreMatchers.is(true));
        MatcherAssert.assertThat(testEvent.getEvent().getField("foo"), CoreMatchers.nullValue());
    }