@Test
public void testMultipleNestedOperators() throws Exception {

    Map<String, Object> rawFilters = readFiltersFromResources("MultipleNestedOperators.json");
    Map<RequestObject, Object> filters = FiltersParser.parseFilters(rawFilters);
    Assertions.assertThat(filters)
            .hasSize(3)
            .containsOnlyKeys(RequestField.of("name"), RequestField.of("lastName"), RequestLogicalOperator.of(LogicalOperatorType.OR));
    assertThat((Map) filters.get(RequestField.of("name")))
            .hasSize(2)
            .containsEntry(RequestOperator.of(OperatorType.STARTS_WITH), "John")
            .containsEntry(RequestOperator.of(OperatorType.IN), Lists.newArrayList("Johnny", "Abc"));
    assertThat((Map) filters.get(RequestField.of("lastName")))
            .hasSize(1)
            .containsEntry(RequestLogicalOperator.of(LogicalOperatorType.OR), ImmutableMap.of(
                    RequestOperator.of(OperatorType.STARTS_WITH), "John",
                    RequestOperator.of(OperatorType.IN), Lists.newArrayList("Johnny", "Abc")
            ));
    assertThat((Map) filters.get(RequestLogicalOperator.of(LogicalOperatorType.OR)))
            .hasSize(2)
            .containsEntry(RequestField.of("name"), ImmutableMap.of(RequestOperator.of(OperatorType.EQUAL), "John"))
            .containsEntry(RequestField.of("last"), ImmutableMap.of(RequestOperator.of(OperatorType.EQUAL), "Doe"));
}