// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/base/HasToStringContaining.java
// public static <T> Matcher<T> hasToStringContainingInOrder(final Object... items) {
//     final List<String> strings = new ArrayList<>();
//     for (final Object item : items) {
//         strings.add(item.toString());
//     }
//     return hasToString(stringContainsInOrder(strings));
// }
// 
// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/clazz/IsValidNoArgumentConstructor.java
// public static Matcher<Class> hasNoArgumentConstructor() {
//     return new IsValidNoArgumentConstructor();
// }


import com.google.common.base.MoreObjects;
import lombok.Builder;
import org.junit.Test;
import java.util.Date;
import java.util.UUID;
import static it.ozimov.cirneco.hamcrest.base.HasToStringContaining.hasToStringContainingInOrder;
import static it.ozimov.cirneco.hamcrest.clazz.IsValidNoArgumentConstructor.hasNoArgumentConstructor;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.not;

        //Assert
        assertThat(aClass, hasToStringContainingInOrder(id, field, date));
    }

    @Test
    public void testHasToStringContainingInOrderFailsOnWrongOrder() throws Exception {
        //Arrange
        final UUID id = UUID.randomUUID();
        final String field = "A value";
        final Date date = new Date();

        //Act
        final AClass aClass = AClass.builder().id(id).field(field).date(date).build();

        //Assert
        assertThat(aClass, not(hasToStringContainingInOrder(field, id, date)));
    }

    @Builder
    static class AClass {

        UUID id;
        String field;
        Date date;

        @Override
        public String toString() {
            return MoreObjects.toStringHelper(this)
                    .add("id", id)
// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/base/HasToStringContaining.java
// public static <T> Matcher<T> hasToStringContainingInOrder(final Object... items) {
//     final List<String> strings = new ArrayList<>();
//     for (final Object item : items) {
//         strings.add(item.toString());
//     }
//     return hasToString(stringContainsInOrder(strings));
// }
// 
// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/clazz/IsValidNoArgumentConstructor.java
// public static Matcher<Class> hasNoArgumentConstructor() {
//     return new IsValidNoArgumentConstructor();
// }


// Path: hamcrest/hamcrest-matchers/src/test/java/it/ozimov/cirneco/hamcrest/base/HasToStringContainingTest.java
import com.google.common.base.MoreObjects;
import lombok.Builder;
import org.junit.Test;
import java.util.Date;
import java.util.UUID;
import static it.ozimov.cirneco.hamcrest.base.HasToStringContaining.hasToStringContainingInOrder;
import static it.ozimov.cirneco.hamcrest.clazz.IsValidNoArgumentConstructor.hasNoArgumentConstructor;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.not;


        //Assert
        assertThat(aClass, hasToStringContainingInOrder(id, field, date));
    }

    @Test
    public void testHasToStringContainingInOrderFailsOnWrongOrder() throws Exception {
        //Arrange
        final UUID id = UUID.randomUUID();
        final String field = "A value";
        final Date date = new Date();

        //Act
        final AClass aClass = AClass.builder().id(id).field(field).date(date).build();

        //Assert
        assertThat(aClass, not(hasToStringContainingInOrder(field, id, date)));
    }

    @Builder
    static class AClass {

        UUID id;
        String field;
        Date date;

        @Override
        public String toString() {
            return MoreObjects.toStringHelper(this)
                    .add("id", id)
                    .add("field", field)