public Collection<IndexMetaData> revise(final String tableName, final Collection<IndexMetaData> originalMetaDataList) {
        Optional<? extends IndexReviser<T>> reviser = reviseEntry.getIndexReviser(rule, tableName);
        return reviser.isPresent()
                ? originalMetaDataList.stream()
                        .map(each -> reviser.get().revise(tableName, each, rule)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toCollection(LinkedHashSet::new))
                : originalMetaDataList;
    }
@Test
    void assertReviseIsPresentIsTrue() {
        IndexReviser<T> reviser = mock(IndexReviser.class);
        IndexMetaData indexMetaData = new IndexMetaData("index");
        doReturn(Optional.of(reviser)).when(metaDataReviseEntry).getIndexReviser(any(), anyString());
        when(reviser.revise(anyString(), any(), any())).thenReturn(Optional.of(indexMetaData));
        Collection<IndexMetaData> indexMetaDataCollection = Arrays.asList(new IndexMetaData("index1"), new IndexMetaData("index2"));
        Collection<IndexMetaData> actual = indexReviseEngine.revise("tableName", indexMetaDataCollection);
        assertThat(actual.size(), equalTo(1));
        assertTrue(actual.contains(indexMetaData));
    }