// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbCommitStatus.java
// public interface GhprbCommitStatus {
//     void onEnvironmentSetup(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException;
// 
//     void onBuildTriggered(Job<?, ?> project, String commitSha, boolean isMergeable, int prId, GHRepository ghRepository)
//             throws GhprbCommitStatusException;
// 
//     void onBuildStart(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException;
// 
//     void onBuildComplete(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException;
// }
// 
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbCommitStatusException.java
// public class GhprbCommitStatusException extends Exception {
//     private static final long serialVersionUID = 6220095323686649609L;
// 
//     private final IOException exception;
// 
//     private final String message;
// 
//     private final GHCommitState state;
// 
//     private final int id;
// 
//     public GhprbCommitStatusException(IOException exception, GHCommitState state, String message, int id) {
//         this.exception = exception;
//         this.state = state;
//         this.message = message;
//         this.id = id;
//     }
// 
//     public IOException getException() {
//         return exception;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public GHCommitState getState() {
//         return state;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
// }
// 
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbExtension.java
// public abstract class GhprbExtension extends AbstractDescribableImpl<GhprbExtension> {
// 
// }
// 
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbExtensionDescriptor.java
// @SuppressWarnings("unchecked")
// public abstract class GhprbExtensionDescriptor extends Descriptor<GhprbExtension> {
//     public boolean isApplicable(Class<?> type) {
//         return true;
//     }
// 
//     public static List<GhprbExtensionDescriptor> getExtensions(Class<? extends GhprbExtensionType>... types) {
//         List<GhprbExtensionDescriptor> list = getExtensions();
//         filterExtensions(list, types);
//         return list;
//     }
// 
//     private static void filterExtensions(List<GhprbExtensionDescriptor> descriptors, Class<? extends GhprbExtensionType>... types) {
//         List<Predicate> predicates = new ArrayList<Predicate>(types.length);
//         for (Class<? extends GhprbExtensionType> type : types) {
//             predicates.add(InstanceofPredicate.getInstance(type));
// 
//         }
//         Predicate anyPredicate = PredicateUtils.anyPredicate(predicates);
//         Iterator<GhprbExtensionDescriptor> iter = descriptors.iterator();
//         while (iter.hasNext()) {
//             GhprbExtensionDescriptor descriptor = iter.next();
//             if (!anyPredicate.evaluate(descriptor)) {
//                 iter.remove();
//             }
//         }
//     }
// 
//     private static DescriptorExtensionList<GhprbExtension, GhprbExtensionDescriptor> getExtensionList() {
//         return Jenkins.getInstance().getDescriptorList(GhprbExtension.class);
//     }
// 
//     /**
//      * Don't mutate the list from Jenkins, they will persist;
//      *
//      * @return list of extensions
//      */
//     private static List<GhprbExtensionDescriptor> getExtensions() {
//         List<GhprbExtensionDescriptor> list = new ArrayList<GhprbExtensionDescriptor>();
//         list.addAll(getExtensionList());
//         return list;
//     }
// 
//     public static List<GhprbExtensionDescriptor> allProject() {
//         List<GhprbExtensionDescriptor> list = getExtensions();
//         filterExtensions(list, GhprbProjectExtension.class);
//         return list;
//     }
// 
//     public static List<GhprbExtensionDescriptor> allGlobal() {
//         List<GhprbExtensionDescriptor> list = getExtensions();
//         filterExtensions(list, GhprbGlobalExtension.class);
//         return list;
//     }
// 
// }


import hudson.Extension;
import hudson.model.Job;
import hudson.model.Run;
import hudson.model.TaskListener;
import org.jenkinsci.plugins.ghprb.extensions.GhprbCommitStatus;
import org.jenkinsci.plugins.ghprb.extensions.GhprbCommitStatusException;
import org.jenkinsci.plugins.ghprb.extensions.GhprbExtension;
import org.jenkinsci.plugins.ghprb.extensions.GhprbExtensionDescriptor;
import org.jenkinsci.plugins.ghprb.extensions.GhprbProjectExtension;
import org.kohsuke.github.GHRepository;
import org.kohsuke.stapler.DataBoundConstructor;
package org.jenkinsci.plugins.ghprb.extensions.status;


public class GhprbNoCommitStatus extends GhprbExtension implements GhprbCommitStatus, GhprbProjectExtension {
    @Extension
    public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();

    @DataBoundConstructor
    public GhprbNoCommitStatus() {

    }

    public void onBuildStart(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException {

    }

    public void onBuildComplete(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException {

    }

    public void onEnvironmentSetup(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException {

    }

    public void onBuildTriggered(
            Job<?, ?> project,
            String commitSha,
            boolean isMergeable,
            int prId,
            GHRepository ghRepository
    ) throws GhprbCommitStatusException {

    }

    @Override
    public DescriptorImpl getDescriptor() {
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbCommitStatus.java
// public interface GhprbCommitStatus {
//     void onEnvironmentSetup(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException;
// 
//     void onBuildTriggered(Job<?, ?> project, String commitSha, boolean isMergeable, int prId, GHRepository ghRepository)
//             throws GhprbCommitStatusException;
// 
//     void onBuildStart(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException;
// 
//     void onBuildComplete(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException;
// }
// 
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbCommitStatusException.java
// public class GhprbCommitStatusException extends Exception {
//     private static final long serialVersionUID = 6220095323686649609L;
// 
//     private final IOException exception;
// 
//     private final String message;
// 
//     private final GHCommitState state;
// 
//     private final int id;
// 
//     public GhprbCommitStatusException(IOException exception, GHCommitState state, String message, int id) {
//         this.exception = exception;
//         this.state = state;
//         this.message = message;
//         this.id = id;
//     }
// 
//     public IOException getException() {
//         return exception;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public GHCommitState getState() {
//         return state;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
// }
// 
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbExtension.java
// public abstract class GhprbExtension extends AbstractDescribableImpl<GhprbExtension> {
// 
// }
// 
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/GhprbExtensionDescriptor.java
// @SuppressWarnings("unchecked")
// public abstract class GhprbExtensionDescriptor extends Descriptor<GhprbExtension> {
//     public boolean isApplicable(Class<?> type) {
//         return true;
//     }
// 
//     public static List<GhprbExtensionDescriptor> getExtensions(Class<? extends GhprbExtensionType>... types) {
//         List<GhprbExtensionDescriptor> list = getExtensions();
//         filterExtensions(list, types);
//         return list;
//     }
// 
//     private static void filterExtensions(List<GhprbExtensionDescriptor> descriptors, Class<? extends GhprbExtensionType>... types) {
//         List<Predicate> predicates = new ArrayList<Predicate>(types.length);
//         for (Class<? extends GhprbExtensionType> type : types) {
//             predicates.add(InstanceofPredicate.getInstance(type));
// 
//         }
//         Predicate anyPredicate = PredicateUtils.anyPredicate(predicates);
//         Iterator<GhprbExtensionDescriptor> iter = descriptors.iterator();
//         while (iter.hasNext()) {
//             GhprbExtensionDescriptor descriptor = iter.next();
//             if (!anyPredicate.evaluate(descriptor)) {
//                 iter.remove();
//             }
//         }
//     }
// 
//     private static DescriptorExtensionList<GhprbExtension, GhprbExtensionDescriptor> getExtensionList() {
//         return Jenkins.getInstance().getDescriptorList(GhprbExtension.class);
//     }
// 
//     /**
//      * Don't mutate the list from Jenkins, they will persist;
//      *
//      * @return list of extensions
//      */
//     private static List<GhprbExtensionDescriptor> getExtensions() {
//         List<GhprbExtensionDescriptor> list = new ArrayList<GhprbExtensionDescriptor>();
//         list.addAll(getExtensionList());
//         return list;
//     }
// 
//     public static List<GhprbExtensionDescriptor> allProject() {
//         List<GhprbExtensionDescriptor> list = getExtensions();
//         filterExtensions(list, GhprbProjectExtension.class);
//         return list;
//     }
// 
//     public static List<GhprbExtensionDescriptor> allGlobal() {
//         List<GhprbExtensionDescriptor> list = getExtensions();
//         filterExtensions(list, GhprbGlobalExtension.class);
//         return list;
//     }
// 
// }


// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/status/GhprbNoCommitStatus.java
import hudson.Extension;
import hudson.model.Job;
import hudson.model.Run;
import hudson.model.TaskListener;
import org.jenkinsci.plugins.ghprb.extensions.GhprbCommitStatus;
import org.jenkinsci.plugins.ghprb.extensions.GhprbCommitStatusException;
import org.jenkinsci.plugins.ghprb.extensions.GhprbExtension;
import org.jenkinsci.plugins.ghprb.extensions.GhprbExtensionDescriptor;
import org.jenkinsci.plugins.ghprb.extensions.GhprbProjectExtension;
import org.kohsuke.github.GHRepository;
import org.kohsuke.stapler.DataBoundConstructor;

package org.jenkinsci.plugins.ghprb.extensions.status;


public class GhprbNoCommitStatus extends GhprbExtension implements GhprbCommitStatus, GhprbProjectExtension {
    @Extension
    public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();

    @DataBoundConstructor
    public GhprbNoCommitStatus() {

    }

    public void onBuildStart(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException {

    }

    public void onBuildComplete(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException {

    }

    public void onEnvironmentSetup(Run<?, ?> build, TaskListener listener, GHRepository repo) throws GhprbCommitStatusException {

    }

    public void onBuildTriggered(
            Job<?, ?> project,
            String commitSha,
            boolean isMergeable,
            int prId,
            GHRepository ghRepository
    ) throws GhprbCommitStatusException {

    }

    @Override
    public DescriptorImpl getDescriptor() {
        return DESCRIPTOR;