// Path: src/main/java/com/smartbear/swagger4j/ApiDeclaration.java
// public interface ApiDeclaration {
// 
//     public final static String DEFAULT_API_VERSION = "1.0";
// 
//     public SwaggerVersion getSwaggerVersion();
// 
//     public void setSwaggerVersion(SwaggerVersion swaggerVersion);
// 
//     public String getApiVersion();
// 
//     public void setApiVersion(String apiVersion);
// 
//     public String getBasePath();
// 
//     public void setBasePath(String basePath);
// 
//     public String getResourcePath();
// 
//     public void setResourcePath(String resourcedPath);
// 
//     /**
//      * Gets a list of APIs for this ApiDeclarations
//      *
//      * @return a list of Api objects
//      * @see Api
//      */
// 
//     public List<Api> getApis();
// 
//     /**
//      * Removes the specified Api from this ApiDeclaration
//      *
//      * @param api the Api to remove
//      * @see Api
//      */
// 
//     public void removeApi(Api api);
// 
//     /**
//      * Adds a new API to this ApiDeclaration with the specified path
//      *
//      * @param path the path for the API to add
//      * @return the created API
//      * @see Api
//      */
// 
//     public Api addApi(String path);
// 
//     /**
//      * Gets the API at the specified path
//      *
//      * @param path the path to the API
//      * @return the API at that path, null if none available
//      * @see Api
//      */
// 
//     public Api getApi(String path);
// 
//     public Collection<String> getProduces();
// 
//     public void removeProduces(String produces);
// 
//     public void addProduces(String produces);
// 
//     public Collection<String> getConsumes();
// 
//     public void removeConsumes(String consumes);
// 
//     public void addConsumes(String consumes);
// 
//     public Collection<Model> getModels();
// 
//     public Model getModel(String id);
// 
//     public void addModel(Model model);
// 
// }
// 
// Path: src/main/java/com/smartbear/swagger4j/Model.java
// public interface Model extends HasDataType {
// 
//     String getId();
// 
//     String getDescription();
// 
//     List<String> getRequiredProperties();
// 
//     List<Property> getProperties();
// }
// 
// Path: src/main/java/com/smartbear/swagger4j/ResourceListing.java
// public interface ResourceListing {
// 
//     public SwaggerVersion getSwaggerVersion();
// 
//     public void setSwaggerVersion(SwaggerVersion swaggerVersion);
// 
//     public String getApiVersion();
// 
//     public void setApiVersion(String apiVersion);
// 
//     public String getBasePath();
// 
//     public void setBasePath(String basePath);
// 
//     public List<ResourceListingApi> getApis();
// 
//     public void removeApi(ResourceListingApi api);
// 
//     public ResourceListingApi addApi(ApiDeclaration apiDeclaration, String path);
// 
//     /**
//      * Concatenates then returns the models of all APIs.
//      *
//      * @return a Model collection.
//      */
//     public Collection<Model> getApisModels();
// 
//     /**
//      * A reference to a Swagger API-Declaration contained within a Resource-Listing
//      */
// 
//     public interface ResourceListingApi {
// 
//         public String getDescription();
// 
//         public void setDescription(String description);
// 
//         public ApiDeclaration getDeclaration();
// 
//         public String getPath();
// 
//         public void setPath(String path);
//     }
// 
//     public Info getInfo();
// 
//     public Authorizations getAuthorizations();
// }
// 
// Path: src/main/java/com/smartbear/swagger4j/SwaggerVersion.java
// public enum SwaggerVersion {
//     V1_0, V1_1, V1_2, V2_0;
// 
//     public String getIdentifier() {
//         switch (this) {
//             case V1_0:
//                 return "1.0";
//             case V1_1:
//                 return "1.1";
//             case V1_2:
//                 return "1.2";
//             case V2_0:
//                 return "2.0";
//         }
// 
//         throw new RuntimeException("Unexpected Swagger version: " + this.name());
//     }
// 
//     public final static SwaggerVersion DEFAULT_VERSION = V1_2;
// 
//     public static SwaggerVersion fromIdentifier(String string) {
//         if (V1_0.getIdentifier().equals(string)) {
//             return V1_0;
//         }
//         if (V1_1.getIdentifier().equals(string)) {
//             return V1_1;
//         }
//         if (V1_2.getIdentifier().equals(string)) {
//             return V1_2;
//         }
//         if (V2_0.getIdentifier().equals(string)) {
//             return V2_0;
//         }
// 
//         throw new RuntimeException("Unknown Swagger Version: " + string);
//     }
// 
//     public boolean isGreaterThan(SwaggerVersion version) {
//         return version.getIdentifier().compareTo(getIdentifier()) < 0;
//     }
// 
//     public boolean isLessThan(SwaggerVersion version) {
//         return version.getIdentifier().compareTo(getIdentifier()) > 0;
//     }
// }


import com.smartbear.swagger4j.ApiDeclaration;
import com.smartbear.swagger4j.Authorizations;
import com.smartbear.swagger4j.Info;
import com.smartbear.swagger4j.Model;
import com.smartbear.swagger4j.ResourceListing;
import com.smartbear.swagger4j.SwaggerVersion;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
    @Override
    public Info getInfo() {
        if (info == null) {
            info = new InfoImpl();
        }

        return info;
    }

    public Authorizations getAuthorizations() {
        if (authorizations == null) {
            authorizations = new AuthorizationsImpl();
        }

        return authorizations;
    }

    private ResourceListingApi getApi(String path) {
        synchronized (apiList) {
            for (ResourceListingApi api : apiList) {
                if (api.getPath().equals(path)) {
                    return api;
                }
            }

            return null;
        }
    }

    public Collection<Model> getApisModels() {
// Path: src/main/java/com/smartbear/swagger4j/ApiDeclaration.java
// public interface ApiDeclaration {
// 
//     public final static String DEFAULT_API_VERSION = "1.0";
// 
//     public SwaggerVersion getSwaggerVersion();
// 
//     public void setSwaggerVersion(SwaggerVersion swaggerVersion);
// 
//     public String getApiVersion();
// 
//     public void setApiVersion(String apiVersion);
// 
//     public String getBasePath();
// 
//     public void setBasePath(String basePath);
// 
//     public String getResourcePath();
// 
//     public void setResourcePath(String resourcedPath);
// 
//     /**
//      * Gets a list of APIs for this ApiDeclarations
//      *
//      * @return a list of Api objects
//      * @see Api
//      */
// 
//     public List<Api> getApis();
// 
//     /**
//      * Removes the specified Api from this ApiDeclaration
//      *
//      * @param api the Api to remove
//      * @see Api
//      */
// 
//     public void removeApi(Api api);
// 
//     /**
//      * Adds a new API to this ApiDeclaration with the specified path
//      *
//      * @param path the path for the API to add
//      * @return the created API
//      * @see Api
//      */
// 
//     public Api addApi(String path);
// 
//     /**
//      * Gets the API at the specified path
//      *
//      * @param path the path to the API
//      * @return the API at that path, null if none available
//      * @see Api
//      */
// 
//     public Api getApi(String path);
// 
//     public Collection<String> getProduces();
// 
//     public void removeProduces(String produces);
// 
//     public void addProduces(String produces);
// 
//     public Collection<String> getConsumes();
// 
//     public void removeConsumes(String consumes);
// 
//     public void addConsumes(String consumes);
// 
//     public Collection<Model> getModels();
// 
//     public Model getModel(String id);
// 
//     public void addModel(Model model);
// 
// }
// 
// Path: src/main/java/com/smartbear/swagger4j/Model.java
// public interface Model extends HasDataType {
// 
//     String getId();
// 
//     String getDescription();
// 
//     List<String> getRequiredProperties();
// 
//     List<Property> getProperties();
// }
// 
// Path: src/main/java/com/smartbear/swagger4j/ResourceListing.java
// public interface ResourceListing {
// 
//     public SwaggerVersion getSwaggerVersion();
// 
//     public void setSwaggerVersion(SwaggerVersion swaggerVersion);
// 
//     public String getApiVersion();
// 
//     public void setApiVersion(String apiVersion);
// 
//     public String getBasePath();
// 
//     public void setBasePath(String basePath);
// 
//     public List<ResourceListingApi> getApis();
// 
//     public void removeApi(ResourceListingApi api);
// 
//     public ResourceListingApi addApi(ApiDeclaration apiDeclaration, String path);
// 
//     /**
//      * Concatenates then returns the models of all APIs.
//      *
//      * @return a Model collection.
//      */
//     public Collection<Model> getApisModels();
// 
//     /**
//      * A reference to a Swagger API-Declaration contained within a Resource-Listing
//      */
// 
//     public interface ResourceListingApi {
// 
//         public String getDescription();
// 
//         public void setDescription(String description);
// 
//         public ApiDeclaration getDeclaration();
// 
//         public String getPath();
// 
//         public void setPath(String path);
//     }
// 
//     public Info getInfo();
// 
//     public Authorizations getAuthorizations();
// }
// 
// Path: src/main/java/com/smartbear/swagger4j/SwaggerVersion.java
// public enum SwaggerVersion {
//     V1_0, V1_1, V1_2, V2_0;
// 
//     public String getIdentifier() {
//         switch (this) {
//             case V1_0:
//                 return "1.0";
//             case V1_1:
//                 return "1.1";
//             case V1_2:
//                 return "1.2";
//             case V2_0:
//                 return "2.0";
//         }
// 
//         throw new RuntimeException("Unexpected Swagger version: " + this.name());
//     }
// 
//     public final static SwaggerVersion DEFAULT_VERSION = V1_2;
// 
//     public static SwaggerVersion fromIdentifier(String string) {
//         if (V1_0.getIdentifier().equals(string)) {
//             return V1_0;
//         }
//         if (V1_1.getIdentifier().equals(string)) {
//             return V1_1;
//         }
//         if (V1_2.getIdentifier().equals(string)) {
//             return V1_2;
//         }
//         if (V2_0.getIdentifier().equals(string)) {
//             return V2_0;
//         }
// 
//         throw new RuntimeException("Unknown Swagger Version: " + string);
//     }
// 
//     public boolean isGreaterThan(SwaggerVersion version) {
//         return version.getIdentifier().compareTo(getIdentifier()) < 0;
//     }
// 
//     public boolean isLessThan(SwaggerVersion version) {
//         return version.getIdentifier().compareTo(getIdentifier()) > 0;
//     }
// }


// Path: src/main/java/com/smartbear/swagger4j/impl/ResourceListingImpl.java
import com.smartbear.swagger4j.ApiDeclaration;
import com.smartbear.swagger4j.Authorizations;
import com.smartbear.swagger4j.Info;
import com.smartbear.swagger4j.Model;
import com.smartbear.swagger4j.ResourceListing;
import com.smartbear.swagger4j.SwaggerVersion;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

    @Override
    public Info getInfo() {
        if (info == null) {
            info = new InfoImpl();
        }

        return info;
    }

    public Authorizations getAuthorizations() {
        if (authorizations == null) {
            authorizations = new AuthorizationsImpl();
        }

        return authorizations;
    }

    private ResourceListingApi getApi(String path) {
        synchronized (apiList) {
            for (ResourceListingApi api : apiList) {
                if (api.getPath().equals(path)) {
                    return api;
                }
            }

            return null;
        }
    }

    public Collection<Model> getApisModels() {
        List<Model> models = new ArrayList<Model>();