// Path: core/src/main/java/io/appflate/restmock/logging/NOOpLogger.java
// public class NOOpLogger implements RESTMockLogger {
// 
//     @Override
//     public void log(String message) {
//         //intentionally empty
//     }
// 
//     @Override
//     public void error(String errorMessage) {
//         //intentionally empty
//     }
// 
//     @Override
//     public void error(String errorMessage, Throwable exception) {
//         //intentionally empty
//     }
// }
// 
// Path: core/src/main/java/io/appflate/restmock/logging/RESTMockLogger.java
// public interface RESTMockLogger {
// 
//     void log(String message);
// 
//     void error(String errorMessage);
// 
//     void error(String errorMessage, Throwable exception);
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isDELETE() {
//     return httpMethodIs("DELETE");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isGET() {
//     return httpMethodIs("GET");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isHEAD() {
//     return httpMethodIs("HEAD");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isPATCH() {
//     return httpMethodIs("PATCH");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isPOST() {
//     return httpMethodIs("POST");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isPUT() {
//     return httpMethodIs("PUT");
// }


import static io.appflate.restmock.utils.RequestMatchers.isPUT;
import static org.hamcrest.core.AllOf.allOf;
import io.appflate.restmock.logging.NOOpLogger;
import io.appflate.restmock.logging.RESTMockLogger;
import java.io.IOException;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.X509TrustManager;
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;
import org.hamcrest.Matcher;
import static io.appflate.restmock.utils.RequestMatchers.isDELETE;
import static io.appflate.restmock.utils.RequestMatchers.isGET;
import static io.appflate.restmock.utils.RequestMatchers.isHEAD;
import static io.appflate.restmock.utils.RequestMatchers.isPATCH;
import static io.appflate.restmock.utils.RequestMatchers.isPOST;
     * Helper method to create MatchableCall that will be matched only for PUT requests along with the specified {@code requestMatcher}
     *
     * @param requestMatcher matcher to match a PUT request
     * @return {@code MatchableCall} that will match PUT requests along with {@code requestMatcher}
     */
    public static MatchableCall whenPUT(Matcher<RecordedRequest> requestMatcher) {
        return RESTMockServer.whenRequested(allOf(isPUT(), requestMatcher));
    }

    /**
     * Helper method to create MatchableCall that will be matched only for PATCH requests along with the specified {@code requestMatcher}
     *
     * @param requestMatcher matcher to match a PATCH request
     * @return {@code MatchableCall} that will match PATCH requests along with {@code requestMatcher}
     */
    public static MatchableCall whenPATCH(Matcher<RecordedRequest> requestMatcher) {
        return RESTMockServer.whenRequested(allOf(isPATCH(), requestMatcher));
    }

    /**
     * Helper method to create MatchableCall that will be matched only for DELETE requests along with the specified {@code requestMatcher}
     *
     * @param requestMatcher matcher to match a DELETE request
     * @return {@code MatchableCall} that will match DELETE requests along with {@code requestMatcher}
     */
    public static MatchableCall whenDELETE(Matcher<RecordedRequest> requestMatcher) {
        return RESTMockServer.whenRequested(allOf(isDELETE(), requestMatcher));
    }

    public static MatchableCall whenHEAD(Matcher<RecordedRequest> requestMatcher) {
// Path: core/src/main/java/io/appflate/restmock/logging/NOOpLogger.java
// public class NOOpLogger implements RESTMockLogger {
// 
//     @Override
//     public void log(String message) {
//         //intentionally empty
//     }
// 
//     @Override
//     public void error(String errorMessage) {
//         //intentionally empty
//     }
// 
//     @Override
//     public void error(String errorMessage, Throwable exception) {
//         //intentionally empty
//     }
// }
// 
// Path: core/src/main/java/io/appflate/restmock/logging/RESTMockLogger.java
// public interface RESTMockLogger {
// 
//     void log(String message);
// 
//     void error(String errorMessage);
// 
//     void error(String errorMessage, Throwable exception);
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isDELETE() {
//     return httpMethodIs("DELETE");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isGET() {
//     return httpMethodIs("GET");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isHEAD() {
//     return httpMethodIs("HEAD");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isPATCH() {
//     return httpMethodIs("PATCH");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isPOST() {
//     return httpMethodIs("POST");
// }
// 
// Path: core/src/main/java/io/appflate/restmock/utils/RequestMatchers.java
// public static RequestMatcher isPUT() {
//     return httpMethodIs("PUT");
// }


// Path: core/src/main/java/io/appflate/restmock/RESTMockServer.java
import static io.appflate.restmock.utils.RequestMatchers.isPUT;
import static org.hamcrest.core.AllOf.allOf;
import io.appflate.restmock.logging.NOOpLogger;
import io.appflate.restmock.logging.RESTMockLogger;
import java.io.IOException;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.X509TrustManager;
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;
import org.hamcrest.Matcher;
import static io.appflate.restmock.utils.RequestMatchers.isDELETE;
import static io.appflate.restmock.utils.RequestMatchers.isGET;
import static io.appflate.restmock.utils.RequestMatchers.isHEAD;
import static io.appflate.restmock.utils.RequestMatchers.isPATCH;
import static io.appflate.restmock.utils.RequestMatchers.isPOST;

     * Helper method to create MatchableCall that will be matched only for PUT requests along with the specified {@code requestMatcher}
     *
     * @param requestMatcher matcher to match a PUT request
     * @return {@code MatchableCall} that will match PUT requests along with {@code requestMatcher}
     */
    public static MatchableCall whenPUT(Matcher<RecordedRequest> requestMatcher) {
        return RESTMockServer.whenRequested(allOf(isPUT(), requestMatcher));
    }

    /**
     * Helper method to create MatchableCall that will be matched only for PATCH requests along with the specified {@code requestMatcher}
     *
     * @param requestMatcher matcher to match a PATCH request
     * @return {@code MatchableCall} that will match PATCH requests along with {@code requestMatcher}
     */
    public static MatchableCall whenPATCH(Matcher<RecordedRequest> requestMatcher) {
        return RESTMockServer.whenRequested(allOf(isPATCH(), requestMatcher));
    }

    /**
     * Helper method to create MatchableCall that will be matched only for DELETE requests along with the specified {@code requestMatcher}
     *
     * @param requestMatcher matcher to match a DELETE request
     * @return {@code MatchableCall} that will match DELETE requests along with {@code requestMatcher}
     */
    public static MatchableCall whenDELETE(Matcher<RecordedRequest> requestMatcher) {
        return RESTMockServer.whenRequested(allOf(isDELETE(), requestMatcher));
    }

    public static MatchableCall whenHEAD(Matcher<RecordedRequest> requestMatcher) {
        return RESTMockServer.whenRequested(allOf(isHEAD(), requestMatcher));