class ConditionalPlaceRequest extends DefaultPlaceRequest {

    @Override
    public boolean equals(final Object o) {
        if (o == null) {
            return false;
        }

        if (!(o instanceof DefaultPlaceRequest)) {
            return false;
        }

        if (this == o) {
            return true;
        }

        PlaceRequest that = (PlaceRequest) o;
        if (o instanceof ConditionalPlaceRequest) {
            that = ((ConditionalPlaceRequest) o).resolveConditionalPlaceRequest();
        }

        if (invalidConditionalPlaceRequest()) {
            return super.equals(that);
        }

        if (predicate == null || predicate.test(this)) {
            return super.equals(that);
        } else {
            return resolve().equals(that);
        }
    }

    public  ConditionalPlaceRequest();
    public  ConditionalPlaceRequest(final String identifier);
    public  ConditionalPlaceRequest(final String identifier,
                                   final Map<String, String> parameters);

}