/** @noinspection UnusedDeclaration*/
interface Matcher<T> {

    boolean matches(Object object);

    void _dont_implement_Matcher___instead_extend_BaseMatcher_();
}

interface ArgumentConstraintPhrases {
    <T> T with(Matcher<T> matcher);
    boolean with(Matcher<Boolean> matcher);
    byte with(Matcher<Byte> matcher);
    int with(Matcher<Integer> matcher);
    long with(Matcher<Long> matcher);
    float with(Matcher<Float> matcher);
    double with(Matcher<Double> matcher);
}

class ExpectationGroupBuilder implements ArgumentConstraintPhrases {

    public <T> T with(final Matcher<T> matcher) {
        return null;
    }

    public boolean with(final Matcher<Boolean> matcher) {
        return false;
    }

    public byte with(final Matcher<Byte> matcher) {
        return 0;
    }

    public int with(final Matcher<Integer> matcher) {
        return 0;
    }

    public long with(final Matcher<Long> matcher) {
        return 0;
    }

    public float with(final Matcher<Float> matcher) {
        return 0;
    }

    public double with(final Matcher<Double> matcher) {
        return 0;
    }
}
