Repository: eclipse/microprofile-open-api
Pull request #290 (2018-10-19 20:35:52)

added getPathString to PathItem
Pull request for issue #264


Patch:
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java
index 5c89bf3..f5c58b6 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/Components.java
@@ -85,13 +85,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addSchema(String key, Schema schema);
 
-    /**
-     * Removes the given schema to this Components' list of schemas with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeSchema(String key);
-
     /**
      * Returns the responses property from a Components instance.
      *
@@ -126,13 +119,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addResponse(String key, APIResponse response);
 
-    /**
-     * Removes the given response to this Components' map of responses with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeResponse(String key);
-
     /**
      * Returns the parameters property from a Components instance.
      *
@@ -167,13 +153,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addParameter(String key, Parameter parameter);
 
-    /**
-     * Removes the given parameter to this Components' map of parameters with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeParameter(String key);
-
     /**
      * Returns the examples property from a Components instance.
      *
@@ -208,13 +187,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addExample(String key, Example example);
 
-    /**
-     * Removes the given example to this Components' map of examples with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeExample(String key);
-
     /**
      * Returns the requestBodies property from a Components instance.
      *
@@ -249,13 +221,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addRequestBody(String key, RequestBody requestBody);
 
-    /**
-     * Removes the given request body to this Components' map of request bodies with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeRequestBody(String key);
-
     /**
      * Returns the headers property from a Components instance.
      *
@@ -290,13 +255,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addHeader(String key, Header header);
 
-    /**
-     * Removes the given header to this Components' map of headers with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeHeader(String key);
-
     /**
      * Returns the securitySchemes property from a Components instance.
      *
@@ -331,13 +289,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addSecurityScheme(String key, SecurityScheme securityScheme);
 
-    /**
-     * Removes the given security scheme to this Components' map of security schemes with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeSecurityScheme(String key);
-
     /**
      * Returns the links property from a Components instance.
      *
@@ -372,13 +323,6 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addLink(String key, Link link);
 
-    /**
-     * Removes the given link to this Components' map of links with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeLink(String key);
-
     /**
      * Returns the callbacks property from a Components instance.
      *
@@ -413,11 +357,4 @@ public interface Components extends Constructible, Extensible<Components> {
      */
     Components addCallback(String key, Callback callback);
 
-    /**
-     * Removes the given callback to this Components' map of callbacks with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeCallback(String key);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/Extensible.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/Extensible.java
index 9bbc84f..9741312 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/Extensible.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/Extensible.java
@@ -52,17 +52,9 @@ public interface Extensible<T extends Extensible<T>> {
      *
      * @param name the key used to access the extension object. Always prefixed by "x-".
      * @param value data not required by the specification
-     * @return the current instance
      */
     T addExtension(String name, Object value);
 
-    /**
-     * Removes the given object to this Extensible's map of extensions, with the given name as its key.
-     *
-     * @param name the key used to access the extension object. Always prefixed by "x-".
-     */
-    void removeExtension(String name);
-
     /**
      * Sets this Extensible's extensions property to the given map of extensions.
      *
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java
index 433403f..8037265 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java
@@ -141,13 +141,6 @@ public interface OpenAPI extends Constructible, Extensible<OpenAPI> {
      */
     OpenAPI addServer(Server server);
 
-    /**
-     * Removes the given server to this OpenAPI instance's list of servers.
-     *
-     * @param server Server object which provides connectivity information to a target server
-     */
-    void removeServer(Server server);
-
     /**
      * Returns the security property from an OpenAPI instance.
      *
@@ -181,13 +174,6 @@ public interface OpenAPI extends Constructible, Extensible<OpenAPI> {
      */
     OpenAPI addSecurityRequirement(SecurityRequirement securityRequirement);
 
-    /**
-     * Removes the given security requirement to this OpenAPI instance's list of security requirements.
-     *
-     * @param securityRequirement security mechanism which can be used across the API
-     */
-    void removeSecurityRequirement(SecurityRequirement securityRequirement);
-
     /**
      * Returns the tags property from an OpenAPI instance.
      *
@@ -222,13 +208,6 @@ public interface OpenAPI extends Constructible, Extensible<OpenAPI> {
      */
     OpenAPI addTag(Tag tag);
 
-    /**
-     * Removes the given tag to this OpenAPI instance's list of tags.
-     *
-     * @param tag a tag used by the specification with additional metadata
-     */
-    void removeTag(Tag tag);
-
     /**
      * Returns the paths property from an OpenAPI instance.
      *
@@ -259,10 +238,8 @@ public interface OpenAPI extends Constructible, Extensible<OpenAPI> {
      * 
      * @param name a path name in the format valid for a Paths object
      * @param path the path item added to the list of paths
-     * @deprecated since 1.1, use @link {@link Paths#addPathItem(String, PathItem)} on {@link #getPaths()} instead
      * @return the current OpenAPI object
      */
-    @Deprecated
     OpenAPI path(String name, PathItem path);
 
     /**
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java
index 9b4bcd4..e438ebc 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/Operation.java
@@ -71,13 +71,6 @@ public interface Operation extends Constructible, Extensible<Operation> {
      **/
     Operation addTag(String tag);
 
-    /**
-     * Removes the given tag to this Operation's list of tags.
-     *
-     * @param tag a tag for API documentation control
-     **/
-    void removeTag(String tag);
-
     /**
      * Returns the summary property from an Operation instance.
      *
@@ -211,13 +204,6 @@ public interface Operation extends Constructible, Extensible<Operation> {
      **/
     Operation addParameter(Parameter parameter);
 
-    /**
-     * Removes the given parameter item to this Operation's list of parameters.
-     *
-     * @param parameter a parameter that is applicable for this operation
-     **/
-    void removeParameter(Parameter parameter);
-
     /**
      * Returns the requestBody property from an Operation instance.
      *
@@ -294,20 +280,12 @@ public interface Operation extends Constructible, Extensible<Operation> {
     }
 
     /**
-     * Adds the given callback item to this Operation's map of callbacks.
+     * Adds the given callback item to this Operation's list of callbacks.
      *
-     * @param key a key conforming to the format required for this object
      * @param callback a callback that is applicable for this operation
      * @return the current Operation object
      **/
-    Operation addCallback(String key, Callback callback);
-
-    /**
-     * Removes the given callback item to this Operation's map of callbacks.
-     *
-     * @param key a key conforming to the format required for this object
-     **/
-    void removeCallback(String key);
+    Operation addCallback(Callback callback);
 
     /**
      * Returns the deprecated property from an Operation instance.
@@ -367,13 +345,6 @@ public interface Operation extends Constructible, Extensible<Operation> {
      **/
     Operation addSecurityRequirement(SecurityRequirement securityRequirement);
 
-    /**
-     * Removes the given security requirement item to this Operation's list of security mechanisms.
-     *
-     * @param securityRequirement security mechanism which can be used for this operation
-     **/
-    void removeSecurityRequirement(SecurityRequirement securityRequirement);
-
     /**
      * Returns the servers property from an Operation instance.
      *
@@ -407,11 +378,4 @@ public interface Operation extends Constructible, Extensible<Operation> {
      **/
     Operation addServer(Server server);
 
-    /**
-     * Removes the given server to this Operation's list of servers.
-     *
-     * @param server server which can service this operation
-     **/
-    void removeServer(Server server);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java
index a5d5866..32de4d3 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/PathItem.java
@@ -50,7 +50,13 @@ public interface PathItem extends Constructible, Extensible<PathItem>, Reference
      * @return a short summary of what the path item represents
      **/
     String getSummary();
-
+    
+    /**
+     * @param pathString a path name in the format valid for a Paths object.
+     * @return returns the path name
+     */
+    String getPathString(String pathString);
+    
     /**
      * Sets this PathItem's summary property to the given string.
      *
@@ -356,13 +362,6 @@ public interface PathItem extends Constructible, Extensible<PathItem>, Reference
      **/
     PathItem addServer(Server server);
 
-    /**
-     * Removes the given server to this PathItem's list of servers.
-     *
-     * @param server a server to service operations in this path item
-     **/
-    void removeServer(Server server);
-
     /**
      * Returns the parameters property from this PathItem instance.
      *
@@ -396,11 +395,4 @@ public interface PathItem extends Constructible, Extensible<PathItem>, Reference
      **/
     PathItem addParameter(Parameter parameter);
 
-    /**
-     * Removes the given parameter to this PathItem's list of parameters.
-     *
-     * @param parameter a parameter that is applicable to all the operations described under this path
-     **/
-    void removeParameter(Parameter parameter);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/Paths.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/Paths.java
index 7cae430..a929394 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/Paths.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/Paths.java
@@ -40,98 +40,4 @@ public interface Paths extends Constructible, Extensible<Paths>, Map<String, Pat
      */
     Paths addPathItem(String name, PathItem item);
 
-    /**
-     * Removes the given path item to this Paths.
-     * 
-     * @param name a path name that will be removed.
-     */
-    void removePathItem(String name);
-
-    /**
-     * Returns a copy map (potentially immutable) of the path items.
-     * 
-     * @return all items
-     */
-    Map<String, PathItem> getPathItems();
-
-    /**
-     * Set the path items map to this Paths
-     * 
-     * @param items a map containing the list of paths. Keys MUST begin with a slash.
-     */
-    void setPathItems(Map<String, PathItem> items);
-
-    /**
-     * Check whether a path item is present in the map. This is a convenience method for <code>getPathItems().containsKey(name)</code>
-     * 
-     * @param name a path name in the format valid for a Paths object.
-     * @return a boolean to indicate if the path item is present or not.
-     */
-    default boolean hasPathItem(String name) {
-        Map<String, PathItem> map = getPathItems();
-        if (map == null) {
-            return false;
-        }
-        return map.containsKey(name);
-    }
-
-    /**
-     * Returns a path item for a given name. This is a convenience method for <code>getPathItems().get(name)</code>
-     * 
-     * @param name a path name in the format valid for a Paths object.
-     * @return the corresponding path item or null.
-     */
-    default PathItem getPathItem(String name) {
-        Map<String, PathItem> map = getPathItems();
-        if (map == null) {
-            return null;
-        }
-        return map.get(name);
-    }
-
-    /**
-     * In the next version, {@link Paths} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #getPathItem(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    PathItem get(Object key);
-
-    /**
-     * In the next version, {@link Paths} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #hasPathItem(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    boolean containsKey(Object key);
-    
-    /**
-     * In the next version, {@link Paths} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #addPathItem(String, PathItem)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    PathItem put(String key, PathItem value);
-
-    /**
-     * In the next version, {@link Paths} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #setPathItems(Map)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    void putAll(Map<? extends String, ? extends PathItem> m);
-
-    /**
-     * In the next version, {@link Paths} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #removePathItem(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    PathItem remove(Object key);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java
index c1c702c..0680add 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/Callback.java
@@ -48,99 +48,4 @@ public interface Callback extends Constructible, Extensible<Callback>, Reference
      */
     Callback addPathItem(String name, PathItem pathItem);
 
-    /**
-     * Removes the given path item of the Callback PathItems.
-     * 
-     * @param name a path name that will be removed.
-     */
-    void removePathItem(String name);
-
-    /**
-     * Returns a copy map (potentially immutable) of the path items.
-     * 
-     * @return all items
-     */
-    Map<String, PathItem> getPathItems();
-
-    /**
-     * Set the path items map to this Callback.
-     * 
-     * @param items a map containing the list of paths.
-     */
-    void setPathItems(Map<String, PathItem> items);
-
-    /**
-     * Check whether a path item is present to the map. This is a convenience method for <code>getPathItems().containsKey(name)</code>
-     * 
-     * @param name a path name in the format valid for a Paths object.
-     * @return a boolean to indicate if the path item is present or not.
-     */
-    default boolean hasPathItem(String name) {
-        Map<String, PathItem> map = getPathItems();
-        if (map == null) {
-            return false;
-        }
-        return map.containsKey(name);
-    }
-
-    /**
-     * Returns a path item for a given name. This is a convenience method for <code>getPathItems().get(name)</code>
-     * 
-     * @param name a path name in the format valid for a Paths object.
-     * @return the corresponding path item or null.
-     */
-    default PathItem getPathItem(String name) {
-        Map<String, PathItem> map = getPathItems();
-        if (map == null) {
-            return null;
-        }
-        return map.get(name);
-    }
-
-    /**
-     * In the next version, {@link Callback} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #getPathItem(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    PathItem get(Object key);
-
-    /**
-     * In the next version, {@link Callback} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #hasPathItem(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    boolean containsKey(Object key);
-    
-    /**
-     * In the next version, {@link Callback} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #addPathItem(String, PathItem)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    PathItem put(String key, PathItem value);
-
-    /**
-     * In the next version, {@link Callback} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #setPathItems(Map)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    void putAll(Map<? extends String, ? extends PathItem> m);
-
-    /**
-     * In the next version, {@link Callback} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #removePathItem(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    PathItem remove(Object key);
-
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java
index a11dfa1..c025af8 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/headers/Header.java
@@ -266,13 +266,6 @@ public interface Header extends Constructible, Extensible<Header>, Reference<Hea
      */
     Header addExample(String key, Example example);
 
-    /**
-     * Removes an example of the media type using the specified key to this Header instance.
-     *
-     * @param key string to represent the example
-     */
-    void removeExample(String key);
-
     /**
      * Returns the example property from a Header instance.
      *
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java
index f35cba0..2740159 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/links/Link.java
@@ -178,14 +178,6 @@ public interface Link extends Constructible, Extensible<Link>, Reference<Link> {
      */
     Link addParameter(String name, Object parameter);
 
-    /**
-     * Remove a new parameter to the parameters property of this instance of Link.
-     *
-     * @param name The name of the parameter. Can be qualified using the parameter location [{in}.]{name} for operations that use the same parameter
-     *            name in different locations (e.g. path.id).
-     */
-    void removeParameter(String name);
-
     /**
      * Returns the description property from a Link instance.
      *
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java
index 367372c..cf6f0ac 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Content.java
@@ -39,98 +39,4 @@ public interface Content extends Constructible, Map<String, MediaType> {
      */
     Content addMediaType(String name, MediaType mediaType);
 
-    /**
-     * Removes the given MediaType for this Content by its name.
-     * 
-     * @param name a path name that will be removed.
-     */
-    void removeMediaType(String name);
-
-    /**
-     * Returns a copy map (potentially immutable) of media types.
-     * 
-     * @return all items
-     */
-    Map<String, MediaType> getMediaTypes();
-
-    /**
-     * Set the media types map to this Content
-     * 
-     * @param mediaTypes a map containing the list of media types. Keys are name of a media type e.g. application/json.
-     */
-    void setMediaTypes(Map<String, MediaType> mediaTypes);
-
-    /**
-     * Check whether a media type is present in the map. This is a convenience method for <code>getMediaTypes().containsKey(name)</code>
-     * 
-     * @param name the name of a media type e.g. application/json.
-     * @return a boolean to indicate if the media type is present or not.
-     */
-    default boolean hasMediaType(String name) {
-        Map<String, MediaType> map = getMediaTypes();
-        if (map == null) {
-            return false;
-        }
-        return map.containsKey(name);
-    }
-
-    /**
-     * Returns a media type for a given name. This is a convenience method for <code>getMediaTypes().get(name)</code>
-     * 
-     * @param name the name of a media type e.g. application/json.
-     * @return the corresponding media type or null.
-     */
-    default MediaType getMediaType(String name) {
-        Map<String, MediaType> map = getMediaTypes();
-        if (map == null) {
-            return null;
-        }
-        return map.get(name);
-    }
-
-    /**
-     * In the next version, {@link Content} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #getMediaType(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    MediaType get(Object key);
-
-    /**
-     * In the next version, {@link Content} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #hasMediaType(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    boolean containsKey(Object key);
-    
-    /**
-     * In the next version, {@link Content} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #addMediaType(String, MediaType)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    MediaType put(String key, MediaType value);
-
-    /**
-     * In the next version, {@link Content} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #setMediaTypes(Map)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    void putAll(Map<? extends String, ? extends MediaType> m);
-
-    /**
-     * In the next version, {@link Content} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #removeMediaType(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    MediaType remove(Object key);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Discriminator.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Discriminator.java
index ab29937..24ae958 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Discriminator.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Discriminator.java
@@ -68,13 +68,6 @@ public interface Discriminator extends Constructible {
      */
     Discriminator addMapping(String name, String value);
 
-    /**
-     * Remove the given name to the given value and stores it in this Discriminator's mapping property.
-     * 
-     * @param name a key which will be compared to information from a request body or response payload.
-     */
-    void removeMapping(String name);
-
     /**
      * Sets this Discriminator's mapping property to the given map object.
      *
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Encoding.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Encoding.java
index 6039c6c..020ba3c 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Encoding.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Encoding.java
@@ -119,13 +119,6 @@ public interface Encoding extends Constructible, Extensible<Encoding> {
      */
     Encoding addHeader(String key, Header header);
 
-    /**
-     * Removes the given header to this Encoding' list of headers with the given string as its key.
-     *
-     * @param key a key conforming to the format required for this object
-     */
-    void removeHeader(String key);
-
     /**
      * Style describes how the encoding value will be serialized depending on the type of the parameter value.
      * <p>
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java
index 03df60a..8e07028 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/MediaType.java
@@ -96,14 +96,6 @@ public interface MediaType extends Constructible, Extensible<MediaType> {
      */
     MediaType addExample(String key, Example example);
 
-    /**
-     * Removes an example item to the examples map of a MediaType instance. The example object should match the media type and specified schema if
-     * present.
-     *
-     * @param key any unique name to identify the example object
-     */
-    void removeExample(String key);
-
     /**
      * Returns the example property from a MediaType instance.
      *
@@ -165,11 +157,4 @@ public interface MediaType extends Constructible, Extensible<MediaType> {
      */
     MediaType addEncoding(String key, Encoding encodingItem);
 
-    /**
-     * Removes an Encoding item to the encoding property of a MediaType instance.
-     *
-     * @param key a property name in the schema
-     */
-    void removeEncoding(String key);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java
index f12df3b..350e2de 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/media/Schema.java
@@ -163,13 +163,6 @@ public interface Schema extends Extensible<Schema>, Constructible, Reference<Sch
      */
     Schema addEnumeration(Object enumeration);
 
-    /**
-     * Removes an item of the appropriate type to the enumerated list of values allowed.
-     *
-     * @param enumeration an object to add to the enumerated values
-     */
-    void removeEnumeration(Object enumeration);
-
     /**
      * Returns the multipleOf property from this Schema instance.
      * <p>
@@ -542,13 +535,6 @@ public interface Schema extends Extensible<Schema>, Constructible, Reference<Sch
      */
     Schema addRequired(String required);
 
-    /**
-     * Removes the name of an item to the list of fields required in objects defined by this Schema.
-     *
-     * @param required the name of an item required in objects defined by this Schema instance
-     */
-    void removeRequired(String required);
-
     /**
      * Returns the type property from this Schema.
      *
@@ -635,17 +621,10 @@ public interface Schema extends Extensible<Schema>, Constructible, Reference<Sch
      */
     Schema addProperty(String key, Schema propertySchema);
 
-    /**
-     * Removes a Schema property of the provided name using the given schema.
-     *
-     * @param key the name of a new Schema property
-     */
-    void removeProperty(String key);
-
     /**
      * Returns the value of the "additionalProperties" setting, which indicates whether 
      * properties not otherwise defined are allowed.  This setting MUST either be a {@link Boolean}
-     * or {@link Schema}, they can not be set both at the same time.
+     * or {@link Schema}.
      * 
      * <ul>
      *   <li>If "additionalProperties" is true, then any additional properties are allowed.</li>
@@ -656,153 +635,48 @@ public interface Schema extends Extensible<Schema>, Constructible, Reference<Sch
      *   <li>If "additionalProperties" is a Schema, then additional properties are allowed but
      *   should conform to the Schema.</li>
      * </ul>
-     * @deprecated since 1.1, use @link {@link #getAdditionalPropertiesSchema()} or {@link #getAdditionalPropertiesBoolean()} instead
-     * @return a Boolean or a schema
-     */
-    @Deprecated
-    default Object getAdditionalProperties() {
-        Schema s = getAdditionalPropertiesSchema();
-        if(s != null) {
-            return s;
-        }
-        return getAdditionalPropertiesBoolean();
-    }
-
-    /**
-     * Returns the value of the "additionalProperties" setting, which indicates whether 
-     * properties not otherwise defined are allowed. This setting MUST either be a {@link Boolean}
-     * or {@link Schema}, they can not be set both at the same time.
-     * <p>
-     * This method returns a {@link Schema}, for the {@link Boolean} getter use {@link #getAdditionalPropertiesBoolean()}
-     * <ul>
-     *   <li>If "additionalProperties" is a Schema, then additional properties are allowed but
-     *   should conform to the Schema.</li>
-     * </ul>
-     * @return this Schema's additionalProperties property (as {@link Schema})
-     */
-    Schema getAdditionalPropertiesSchema();
-
-    /**
-     * Returns the value of the "additionalProperties" setting, which indicates whether 
-     * properties not otherwise defined are allowed. This setting MUST either be a {@link Boolean}
-     * or {@link Schema}, they can not be set both at the same time.
-     * <p>
-     * This method returns a {@link Boolean}, for the {@link Schema} getter use {@link #getAdditionalPropertiesSchema()}
-     * <ul>
-     *   <li>If "additionalProperties" is true, then any additional properties are allowed.</li>
      *
-     *   <li>If "additionalProperties" is false, then only properties covered by the "properties"
-     *   and "patternProperties" are allowed.</li>
-     * </ul>
-     * @return this Schema's additionalProperties property (as {@link Boolean})
-     */
-    Boolean getAdditionalPropertiesBoolean();
-
-    /**
-     * Sets the Schema which defines additional properties not defined by "properties" or "patternProperties".
-     * See the javadoc for {@link Schema#getAdditionalPropertiesSchema()} for more details on this setting.  Note 
-     * that this version of the setter is mutually exclusive with the {@link Boolean} variants (see 
-     * {@link #setAdditionalPropertiesBoolean(Boolean)}).
-     *
-     * @deprecated since 1.1, use @link {@link #setAdditionalPropertiesSchema(Schema)} instead
-     * @param additionalProperties a Schema which defines additional properties
+     * @return this Schema's additionalProperties property
      */
-    @Deprecated
-    default void setAdditionalProperties(Schema additionalProperties) {
-        setAdditionalPropertiesSchema(additionalProperties);
-    }
+    Object getAdditionalProperties();
 
     /**
      * Sets the Schema which defines additional properties not defined by "properties" or "patternProperties".
-     * See the javadoc for {@link Schema#getAdditionalPropertiesSchema()} for more details on this setting.  Note 
-     * that this version of the setter is mutually exclusive with the {@link Boolean} variants (see 
-     * {@link #setAdditionalPropertiesBoolean(Boolean)}).
+     * See the javadoc for {@link Schema#getAdditionalProperties()} for more details on this setting.  Note 
+     * that this version of the setter is mutually exclusive with the Boolean variants.
      *
      * @param additionalProperties a Schema which defines additional properties
      */
-    void setAdditionalPropertiesSchema(Schema additionalProperties);
-
-    /**
-     * Sets the value of "additionalProperties" to either True or False.  See the javadoc for 
-     * {@link Schema#getAdditionalPropertiesBoolean()} for more details on this setting.  Note that
-     * this version of the setter is mutually exclusive with the {@link Schema} variants (see 
-     * {@link #setAdditionalPropertiesSchema(Schema)}).
-     *
-     * @deprecated since 1.1, use @link {@link #setAdditionalPropertiesBoolean(Boolean)} instead
-     * @param additionalProperties a Schema which defines additional properties
-     */
-    @Deprecated
-    default void setAdditionalProperties(Boolean additionalProperties) {
-        setAdditionalPropertiesBoolean(additionalProperties);
-    }
-
+    void setAdditionalProperties(Schema additionalProperties);
+    
     /**
      * Sets the value of "additionalProperties" to either True or False.  See the javadoc for 
-     * {@link Schema#getAdditionalPropertiesBoolean()} for more details on this setting.  Note that
-     * this version of the setter is mutually exclusive with the {@link Schema} variants (see 
-     * {@link #setAdditionalPropertiesSchema(Schema)}).
+     * {@link Schema#getAdditionalProperties()} for more details on this setting.  Note that
+     * this version of the setter is mutually exclusive with the {@link Schema} variants.
      *
      * @param additionalProperties a Schema which defines additional properties
      */
-    void setAdditionalPropertiesBoolean(Boolean additionalProperties);
+    void setAdditionalProperties(Boolean additionalProperties);
 
     /**
      * Sets the Schema which defines additional properties not defined by "properties" or "patternProperties".
-     * See the javadoc for {@link Schema#getAdditionalPropertiesSchema()} for more details on this setting.  Note 
-     * that this version of the setter is mutually exclusive with the {@link Boolean} variants (see 
-     * {@link #additionalPropertiesBoolean(Boolean)}).
-     *
-     * @deprecated since 1.1, use @link {@link #additionalPropertiesSchema(Schema)} instead
-     * @param additionalProperties a Schema which defines additional properties
-     * @return the current Schema instance
-     */
-    @Deprecated
-    default Schema additionalProperties(Schema additionalProperties) {
-        return additionalPropertiesSchema(additionalProperties);
-    }
-
-    /**
-     * Sets the Schema which defines additional properties not defined by "properties" or "patternProperties".
-     * See the javadoc for {@link Schema#getAdditionalPropertiesSchema()} for more details on this setting.  Note 
-     * that this version of the setter is mutually exclusive with the {@link Boolean} variants (see 
-     * {@link #additionalPropertiesBoolean(Boolean)}).
-     *
-     * @param additionalProperties a Schema which defines additional properties
-     * @return the current Schema instance
-     */
-    default Schema additionalPropertiesSchema(Schema additionalProperties) {
-        setAdditionalPropertiesSchema(additionalProperties);
-        return this;
-    }
-
-    /**
-     * Sets the value of "additionalProperties" to either True or False.  See the javadoc for 
-     * {@link Schema#getAdditionalPropertiesBoolean()} for more details on this setting.  Note that
-     * this version of the setter is mutually exclusive with the {@link Schema} variants (see 
-     * {@link #additionalPropertiesSchema(Schema)}).
+     * See the javadoc for {@link Schema#getAdditionalProperties()} for more details on this setting.  Note 
+     * that this version of the setter is mutually exclusive with the Boolean variants.
      *
-     * @deprecated since 1.1, use @link {@link #additionalPropertiesBoolean(Boolean)} instead
      * @param additionalProperties a Schema which defines additional properties
      * @return the current Schema instance
      */
-    @Deprecated
-    default Schema additionalProperties(Boolean additionalProperties) {
-        return additionalPropertiesBoolean(additionalProperties);
-    }
+    Schema additionalProperties(Schema additionalProperties);
 
     /**
      * Sets the value of "additionalProperties" to either True or False.  See the javadoc for 
-     * {@link Schema#getAdditionalPropertiesBoolean()} for more details on this setting.  Note that
-     * this version of the setter is mutually exclusive with the {@link Schema} variants (see 
-     * {@link #additionalPropertiesSchema(Schema)}).
+     * {@link Schema#getAdditionalProperties()} for more details on this setting.  Note that
+     * this version of the setter is mutually exclusive with the {@link Schema} variants.
      *
      * @param additionalProperties a Schema which defines additional properties
      * @return the current Schema instance
      */
-    default Schema additionalPropertiesBoolean(Boolean additionalProperties) {
-        setAdditionalPropertiesBoolean(additionalProperties);
-        return this;
-    }
+    Schema additionalProperties(Boolean additionalProperties);
 
     /**
      * Returns a description of the purpose of this Schema.
@@ -1093,13 +967,6 @@ public interface Schema extends Extensible<Schema>, Constructible, Reference<Sch
      * @return the current Schema instance
      */
     Schema addAllOf(Schema allOf);
-    
-    /**
-     * Removes the given Schema to the list of schemas used by the allOf property.
-     * 
-     * @param allOf a Schema to use with the allOf property
-     */
-    void removeAllOf(Schema allOf);
 
     /**
      * Returns the schemas used by the anyOf property.
@@ -1134,13 +1001,6 @@ public interface Schema extends Extensible<Schema>, Constructible, Reference<Sch
      */
     Schema addAnyOf(Schema anyOf);
 
-    /**
-     * Removes the given Schema to the list of schemas used by the anyOf property.
-     * 
-     * @param anyOf a Schema to use with the anyOf property
-     */
-    void removeAnyOf(Schema anyOf);
-
     /**
      * Returns the schemas used by the oneOf property.
      *
@@ -1174,11 +1034,4 @@ public interface Schema extends Extensible<Schema>, Constructible, Reference<Sch
      */
     Schema addOneOf(Schema oneOf);
 
-    /**
-     * Removes the given Schema to the list of schemas used by the oneOf property.
-     * 
-     * @param oneOf a Schema to use with the oneOf property
-     */
-    void removeOneOf(Schema oneOf);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java
index f65b44f..01a4447 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/Parameter.java
@@ -376,14 +376,6 @@ public interface Parameter extends Constructible, Extensible<Parameter>, Referen
      */
     Parameter addExample(String key, Example example);
 
-    /**
-     * Removes an example of the media type using the specified key. The example should contain a value in the correct format as specified in the
-     * parameter encoding.
-     *
-     * @param key string to represent the example
-     */
-    void removeExample(String key);
-
     /**
      * Returns the example property from a Parameter instance.
      *
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java
index 6eb8e39..dbdd50c 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponse.java
@@ -102,15 +102,6 @@ public interface APIResponse extends Constructible, Extensible<APIResponse>, Ref
 
     APIResponse addHeader(String name, Header header);
 
-    /**
-     * Removes the given Header to this ApiResponse instance's map of Headers with the given name and return this instance of ApiResponse. If this
-     * ApiResponse instance does not have any headers, a new map is created and the given header is added.
-     *
-     * @param name the unique name of the header
-     */
-
-    void removeHeader(String name);
-
     /**
      * Returns the map containing descriptions of potential response payload for this instance of ApiResponse.
      *
@@ -177,12 +168,4 @@ public interface APIResponse extends Constructible, Extensible<APIResponse>, Ref
 
     APIResponse addLink(String name, Link link);
 
-    /**
-     * Removes a link to this instance of ApiResponse using the given name and Link.
-     *
-     * @param name the short name of the link
-     */
-    
-    void removeLink(String name);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java
index 7947b56..01160bd 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/responses/APIResponses.java
@@ -33,159 +33,34 @@ public interface APIResponses extends Constructible, Extensible<APIResponses>, M
     public static final String DEFAULT = "default";
 
     /**
-     * Adds an APIResponse in the format of the name as a key and the item as the value to APIResponses map
+     * Adds an ApiResponse in the format of the name as a key and the item as the value to ApiResponses map
      * 
-     * @param name the name of APIResponse (http status code eventually with wildcard or {@value #DEFAULT})
-     * @param apiResponse the APIResponse object to be added to APIResponses map
-     * @return APIResponses map with the added ApiResponse instance
-     * @deprecated since 1.1, use {@link #addAPIResponse(String, APIResponse)} instead
+     * @param name the name of ApiResponse 
+     * @param apiResponse the ApiResponse object to be added to ApiResponses map
+     * @return ApiResponses map with the added ApiResponse instance
      **/
-    @Deprecated
-    default APIResponses addApiResponse(String name, APIResponse apiResponse) {
-        return addAPIResponse(name, apiResponse);
-    }
-
-    /**
-     * Adds an APIResponse in the format of the name as a key and the item as the value to APIResponses map
-     * 
-     * @param name the name of APIResponse (http status code eventually with wildcard or {@value #DEFAULT})
-     * @param apiResponse the APIResponse object to be added to APIResponses map
-     * @return APIResponses map with the added ApiResponse instance
-     **/
-    APIResponses addAPIResponse(String name, APIResponse apiResponse);
-
-
-    /**
-     * Removes the given APIResponse to this APIResponses.
-     * 
-     * @param name the name of APIResponse that will be removed (http status code eventually with wildcard or {@value #DEFAULT})
-     */
-    void removeAPIResponse(String name);
-
-    /**
-     * Returns a copy map (potentially immutable) of the APIResponses.
-     * 
-     * @return all responses
-     */
-    Map<String, APIResponse> getAPIResponses();
-
-    /**
-     * Set the APIResponses map to this APIResponses
-     * 
-     * @param items a map containing all responses. Keys are http statuses code eventually with wildcard or {@value #DEFAULT}.
-     */
-    void setAPIResponses(Map<String, APIResponse> items);
-
-    /**
-     * Check whether a APIResponse is present in the map. This is a convenience method for <code>getAPIResponses().containsKey(name)</code>
-     * 
-     * @param name the name of APIResponse (http status code eventually with wildcard or {@value #DEFAULT})
-     * @return a boolean to indicate if the APIResponse is present or not.
-     */
-    default boolean hasAPIResponse(String name) {
-        Map<String, APIResponse> map = getAPIResponses();
-        if (map == null) {
-            return false;
-        }
-        return map.containsKey(name);
-    }
-
-    /**
-     * Returns a APIResponse for a given name. This is a convenience method for <code>getAPIResponses().get(name)</code>
-     * 
-     * @param name the name of APIResponse (http status code eventually with wildcard or {@value #DEFAULT})
-     * @return the corresponding APIResponse or null.
-     */
-    default APIResponse getAPIResponse(String name) {
-        Map<String, APIResponse> map = getAPIResponses();
-        if (map == null) {
-            return null;
-        }
-        return map.get(name);
-    }
-
-    /**
-     * In the next version, {@link APIResponses} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #getAPIResponse(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    APIResponse get(Object key);
-
-    /**
-     * In the next version, {@link APIResponses} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #hasAPIResponse(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    boolean containsKey(Object key);
-    
-    /**
-     * In the next version, {@link APIResponses} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #addAPIResponse(String, APIResponse)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    APIResponse put(String key, APIResponse value);
-
-    /**
-     * In the next version, {@link APIResponses} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #setAPIResponses(Map)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    void putAll(Map<? extends String, ? extends APIResponse> m);
-
-    /**
-     * In the next version, {@link APIResponses} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #removeAPIResponse(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    APIResponse remove(Object key);
+    APIResponses addApiResponse(String name, APIResponse apiResponse);
 
     /**
      * Returns the default documentation of responses other than the ones declared for specific HTTP response codes in this instance of ApiResponses.
-     * <p>
-     * Convenience method that is the same as calling {@link #get(Object)} on the map with {@value #DEFAULT} as value for the key.
-     * 
-     * @deprecated since 1.1, use @link {@link #getDefaultValue()} instead
+     *
      * @return the default documentation of responses
      **/
-    @Deprecated 
-    default APIResponse getDefault() {
-        return getDefaultValue();
-    }
 
-    /**
-     * Returns the default documentation of responses other than the ones declared for specific HTTP response codes in this instance of ApiResponses.
-     * <p>
-     * Convenience method that is the same as calling {@link #get(Object)} on the map with {@value #DEFAULT} as value for the key.
-     * 
-     * @return the default documentation of responses
-     **/
-    APIResponse getDefaultValue();
+    APIResponse getDefault();
 
     /**
      * Sets the default documentation of responses for this instance of ApiResponses. This will cover all the undeclared responses.
-     * <p>
-     * Convenience method that is the same as calling {@link #addAPIResponse(String, APIResponse)} with {@value #DEFAULT} as value for the key.
-     * 
+     *
      * @param defaultValue the default documentation of responses
      */
+
     void setDefaultValue(APIResponse defaultValue);
 
     /**
      * Sets the default documentation of responses for this instance of ApiResponses and return this instance of ApiResponses. This will cover all the
      * undeclared responses.
-     * <p>
-     * Convenience method that is the same as calling {@link #addAPIResponse(String, APIResponse)} with {@value #DEFAULT} as value for the key.
-     * 
+     *
      * @param defaultValue the default documentation of responses
      * @return this ApiResponses instance
      */
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java
index 597a852..639bf86 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/Scopes.java
@@ -39,98 +39,4 @@ public interface Scopes extends Constructible, Extensible<Scopes>, Map<String, S
      */
     Scopes addScope(String scope, String description);
 
-    /**
-     * Removes the given scope item to this Scopes.
-     * 
-     * @param scope the name of a scope
-     */
-    void removeScope(String scope);
-
-    /**
-     * Returns a copy map (potentially immutable) of scopes.
-     * 
-     * @return all items
-     */
-    Map<String, String> getScopes();
-
-    /**
-     * Set the scope items map to this Scopes
-     * 
-     * @param items key-value pair in a map.
-     */
-    void setScopes(Map<String, String> items);
-
-    /**
-     * Check whether a scope item is present in the map. This is a convenience method for <code>getScopes().containsKey(name)</code>
-     * 
-     * @param scope the name of a scope.
-     * @return a boolean to indicate if the scope item is present or not.
-     */
-    default boolean hasScope(String scope) {
-        Map<String, String> map = getScopes();
-        if (map == null) {
-            return false;
-        }
-        return map.containsKey(scope);
-    }
-
-    /**
-     * Returns a scope description for a given scope name. This is a convenience method for <code>getScopes().get(name)</code>
-     * 
-     * @param scope the name of a scope.
-     * @return the corresponding description or null.
-     */
-    default String getScope(String scope) {
-        Map<String, String> map = getScopes();
-        if (map == null) {
-            return null;
-        }
-        return map.get(scope);
-    }
-
-    /**
-     * In the next version, {@link Scopes} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #getScope(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    String get(Object key);
-
-    /**
-     * In the next version, {@link Scopes} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #hasScope(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    boolean containsKey(Object key);
-    
-    /**
-     * In the next version, {@link Scopes} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #addScope(String, String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    String put(String key, String value);
-
-    /**
-     * In the next version, {@link Scopes} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #setScopes(Map)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    void putAll(Map<? extends String, ? extends String> m);
-
-    /**
-     * In the next version, {@link Scopes} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #removeScope(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    String remove(Object key);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java
index 70ad9d5..c925c93 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/security/SecurityRequirement.java
@@ -59,99 +59,4 @@ public interface SecurityRequirement extends Constructible, Map<String, List<Str
      */
     SecurityRequirement addScheme(String securitySchemeName);
 
-    /**
-     * Removes a security scheme to the SecurityRequirement instance based on the scheme name.
-     * 
-     * @param securitySchemeName the name of security scheme
-     */
-    void removeScheme(String securitySchemeName);
-
-    /**
-     * Returns a copy map (potentially immutable) of the schemes.
-     * 
-     * @return all items
-     */
-    Map<String, List<String>> getSchemes();
-
-    /**
-     * Set all security schemes to the SecurityRequirement instance. Keys are the name of security scheme declared in the Components 
-     * section of the OpenAPI document, values are a list of required scope - only valid when the defined scheme is 'oauth2' or 'openIdConnect'
-     * 
-     * @param items a map containing the security schemes.
-     */
-    void setSchemes(Map<String, List<String>> items);
-
-    /**
-     * Check whether a scheme is present in the map. This is a convenience method for <code>getSchemes().containsKey(name)</code>
-     * 
-     * @param securitySchemeName the name of security scheme
-     * @return a boolean to indicate if the scheme is present or not.
-     */
-    default boolean hasScheme(String securitySchemeName) {
-        Map<String, List<String>> map = getSchemes();
-        if (map == null) {
-            return false;
-        }
-        return map.containsKey(securitySchemeName);
-    }
-
-    /**
-     * Returns a path item for a given name. This is a convenience method for <code>getSchemes().get(name)</code>
-     * 
-     * @param securitySchemeName the name of security scheme
-     * @return the corresponding path item or null.
-     */
-    default List<String> getScheme(String securitySchemeName) {
-        Map<String, List<String>> map = getSchemes();
-        if (map == null) {
-            return null;
-        }
-        return map.get(securitySchemeName);
-    }
-
-    /**
-     * In the next version, {@link SecurityRequirement} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #getScheme(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    List<String> get(Object key);
-
-    /**
-     * In the next version, {@link SecurityRequirement} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #hasScheme(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    boolean containsKey(Object key);
-    
-    /**
-     * In the next version, {@link SecurityRequirement} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #addScheme(String, List)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    List<String> put(String key, List<String> value);
-
-    /**
-     * In the next version, {@link SecurityRequirement} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #setSchemes(Map)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    void putAll(Map<? extends String, ? extends List<String>> m);
-
-    /**
-     * In the next version, {@link SecurityRequirement} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #removeScheme(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    List<String> remove(Object key);
-
 }
\ No newline at end of file
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java
index 7c370bc..1eac8a1 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariable.java
@@ -70,13 +70,6 @@ public interface ServerVariable extends Constructible, Extensible<ServerVariable
      */
     ServerVariable addEnumeration(String enumeration);
 
-    /**
-     * This method removes a string item to enumeration list of a ServerVariable instance.
-     * 
-     * @param enumeration an item to be removed to enum list
-     */
-    void removeEnumeration(String enumeration);
-
     /**
      * The default value to use for substitution, and to send, if an alternate value is not supplied. This value MUST be provided by the consumer and
      * is REQUIRED.
diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java
index 782894a..8842043 100644
--- a/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java
+++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/servers/ServerVariables.java
@@ -38,98 +38,4 @@ public interface ServerVariables extends Constructible, Extensible<ServerVariabl
      */
     ServerVariables addServerVariable(String name, ServerVariable serverVariable);
 
-    /**
-     * Removes the given server variables.
-     * 
-     * @param name the name of ServerVariable instance
-     */
-    void removeServerVariable(String name);
-
-    /**
-     * Returns a copy map (potentially immutable) of the server variables.
-     * 
-     * @return all items
-     */
-    Map<String, ServerVariable> getServerVariables();
-
-    /**
-     * Set the server variables map to this ServerVariables object.
-     * 
-     * @param items a map containing key-value item.
-     */
-    void setServerVariables(Map<String, ServerVariable> items);
-
-    /**
-     * Check whether a server variable is present in the map. This is a convenience method for <code>getServerVariables().containsKey(name)</code>
-     * 
-     * @param name the name of ServerVariable instance
-     * @return a boolean to indicate if the server variable is present or not.
-     */
-    default boolean hasServerVariable(String name) {
-        Map<String, ServerVariable> map = getServerVariables();
-        if (map == null) {
-            return false;
-        }
-        return map.containsKey(name);
-    }
-
-    /**
-     * Returns a server variable for a given name. This is a convenience method for <code>getServerVariables().get(name)</code>
-     * 
-     * @param name the name of ServerVariable instance
-     * @return the corresponding server variable or null.
-     */
-    default ServerVariable getServerVariable(String name) {
-        Map<String, ServerVariable> map = getServerVariables();
-        if (map == null) {
-            return null;
-        }
-        return map.get(name);
-    }
-
-    /**
-     * In the next version, {@link ServerVariables} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #getServerVariable(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    ServerVariable get(Object key);
-
-    /**
-     * In the next version, {@link ServerVariables} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #hasServerVariable(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    boolean containsKey(Object key);
-    
-    /**
-     * In the next version, {@link ServerVariables} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #addServerVariable(String, ServerVariable)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    ServerVariable put(String key, ServerVariable value);
-
-    /**
-     * In the next version, {@link ServerVariables} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #setServerVariables(Map)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    void putAll(Map<? extends String, ? extends ServerVariable> m);
-
-    /**
-     * In the next version, {@link ServerVariables} will no longer extends {@link Map}, this method will no longer be present.
-     * Use {@link #removeServerVariable(String)} instead.
-     * @deprecated since 1.1
-     */
-    @Deprecated
-    @Override
-    ServerVariable remove(Object key);
-
 }
\ No newline at end of file
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/filter/AirlinesOASFilter.java b/tck/src/main/java/org/eclipse/microprofile/openapi/filter/AirlinesOASFilter.java
index 941100a..4e442be 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/filter/AirlinesOASFilter.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/filter/AirlinesOASFilter.java
@@ -13,24 +13,19 @@
 
 package org.eclipse.microprofile.openapi.filter;
 
-
-import java.util.List;
-import java.util.Map;
-
 import org.eclipse.microprofile.openapi.OASFactory;
 import org.eclipse.microprofile.openapi.OASFilter;
+import org.eclipse.microprofile.openapi.models.responses.APIResponses;
 import org.eclipse.microprofile.openapi.models.OpenAPI;
 import org.eclipse.microprofile.openapi.models.Operation;
 import org.eclipse.microprofile.openapi.models.PathItem;
 import org.eclipse.microprofile.openapi.models.callbacks.Callback;
 import org.eclipse.microprofile.openapi.models.headers.Header;
 import org.eclipse.microprofile.openapi.models.links.Link;
-import org.eclipse.microprofile.openapi.models.media.Content;
 import org.eclipse.microprofile.openapi.models.media.Schema;
 import org.eclipse.microprofile.openapi.models.parameters.Parameter;
 import org.eclipse.microprofile.openapi.models.parameters.RequestBody;
 import org.eclipse.microprofile.openapi.models.responses.APIResponse;
-import org.eclipse.microprofile.openapi.models.responses.APIResponses;
 import org.eclipse.microprofile.openapi.models.security.SecurityScheme;
 import org.eclipse.microprofile.openapi.models.servers.Server;
 import org.eclipse.microprofile.openapi.models.tags.Tag;
@@ -43,29 +38,13 @@ public class AirlinesOASFilter implements OASFilter {
             //Add new operation
             pathItem.PUT(OASFactory.createObject(Operation.class).
                     summary("filterPathItem - added put operation")
-                    .responses(OASFactory.createObject(APIResponses.class).addAPIResponse("200", 
+                    .responses(OASFactory.createObject(APIResponses.class).addApiResponse("200", 
                             OASFactory.createObject(APIResponse.class).description("filterPathItem - successfully put airlines"))));
             
             //Spec states : All filterable descendant elements of a filtered element must be called before its ancestor
             //Override the operatioId value that was previously overridden by the filterOperation method
             pathItem.getGET().setOperationId("filterPathItemGetFlights");
         }
-        
-        if (pathItem.getPOST() != null && "createBooking".equals(pathItem.getPOST().getOperationId())) {
-            Map<String, Callback> callbacks = pathItem.getPOST().getCallbacks();
-            if (callbacks.containsKey("bookingCallback")) {
-                Callback callback = callbacks.get("bookingCallback");
-                if (callback.containsKey("http://localhost:9080/airlines/bookings")
-                        && callback.get("http://localhost:9080/airlines/bookings").getGET() != null) {
-                    if ("child - Retrieve all bookings for current user".equals(callback.get("http://localhost:9080/airlines/bookings")
-                            .getGET().getDescription())) {   
-                        callback.get("http://localhost:9080/airlines/bookings").getGET()
-                        .setDescription("parent - Retrieve all bookings for current user"); 
-                    }
-                }
-            }   
-        }
-        
         return pathItem;
     }
     
@@ -80,14 +59,6 @@ public class AirlinesOASFilter implements OASFilter {
         else if("Retrieve all available flights".equals(operation.getSummary())){
             operation.setOperationId("filterOperationGetFlights");
         }
-        
-        List<String> tags = operation.getTags();
-        if (tags != null) {
-            if (tags.contains("Bookings")) {
-                tags.set(tags.indexOf("Bookings"), "parent - Bookings");
-                operation.setTags(tags);
-            }
-        }
         return operation;
     }
     
@@ -123,18 +94,6 @@ public class AirlinesOASFilter implements OASFilter {
         if("subscription successfully created".equals(apiResponse.getDescription())){
             apiResponse.setDescription("filterAPIResponse - subscription successfully created");
         }
-        
-        // testing child before parent filtering
-        Content content = apiResponse.getContent();
-        if (content != null) {
-            if (content.containsKey("application/json")) {
-                Schema schema = content.get("application/json").getSchema();
-                if ("child - id of the new review".equals(schema.getDescription())) {
-                    schema.setDescription("parent - id of the new review");
-                }
-            }
-        }
-        
         return apiResponse;
     }
     
@@ -143,12 +102,6 @@ public class AirlinesOASFilter implements OASFilter {
         if("subscription information".equals(schema.getDescription())){
             schema.setDescription("filterSchema - subscription information");
         }
-        
-        // testing child before parent filtering
-        if ("id of the new review".equals(schema.getDescription())) {
-            schema.setDescription("child - id of the new review");
-        }
-        
         return schema;
     }
     
@@ -173,10 +126,6 @@ public class AirlinesOASFilter implements OASFilter {
         if("Operations about user".equals(tag.getDescription())){
             tag.setDescription("filterTag - Operations about user");
         }
-        
-        if ("Bookings".equals(tag.getName())) {
-            tag.setName("child - Bookings");
-        }
         return tag;
     }
     
@@ -193,11 +142,6 @@ public class AirlinesOASFilter implements OASFilter {
         if(callback.containsKey("{$request.query.callbackUrl}/data") && callback.get("{$request.query.callbackUrl}/data").getPOST() != null){
             callback.get("{$request.query.callbackUrl}/data").getPOST().setDescription("filterCallback - callback post operation");
         }
-        
-        if (callback.containsKey("http://localhost:9080/airlines/bookings") 
-                && callback.get("http://localhost:9080/airlines/bookings").getGET() != null) {
-            callback.get("http://localhost:9080/airlines/bookings").getGET().setDescription("child - Retrieve all bookings for current user");
-        }
         return callback;
     }
 
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java b/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java
index 34cb0fa..b5225e7 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java
@@ -15,38 +15,39 @@
  */
 package org.eclipse.microprofile.openapi.reader;
 
-import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
+import java.math.BigDecimal;
 
 import org.eclipse.microprofile.openapi.OASFactory;
 import org.eclipse.microprofile.openapi.OASModelReader;
-import org.eclipse.microprofile.openapi.models.Components;
-import org.eclipse.microprofile.openapi.models.ExternalDocumentation;
-import org.eclipse.microprofile.openapi.models.OpenAPI;
-import org.eclipse.microprofile.openapi.models.Operation;
-import org.eclipse.microprofile.openapi.models.PathItem;
-import org.eclipse.microprofile.openapi.models.Paths;
+
 import org.eclipse.microprofile.openapi.models.examples.Example;
 import org.eclipse.microprofile.openapi.models.headers.Header;
 import org.eclipse.microprofile.openapi.models.info.Contact;
-import org.eclipse.microprofile.openapi.models.info.Info;
 import org.eclipse.microprofile.openapi.models.info.License;
 import org.eclipse.microprofile.openapi.models.links.Link;
+import org.eclipse.microprofile.openapi.models.parameters.RequestBody;
+import org.eclipse.microprofile.openapi.models.security.SecurityScheme;
+import org.eclipse.microprofile.openapi.models.tags.Tag;
+import org.eclipse.microprofile.openapi.models.Components;
+import org.eclipse.microprofile.openapi.models.OpenAPI;
+import org.eclipse.microprofile.openapi.models.ExternalDocumentation;
+import org.eclipse.microprofile.openapi.models.Paths;
+import org.eclipse.microprofile.openapi.models.Operation;
+import org.eclipse.microprofile.openapi.models.PathItem;
+import org.eclipse.microprofile.openapi.models.info.Info;
 import org.eclipse.microprofile.openapi.models.media.Content;
 import org.eclipse.microprofile.openapi.models.media.MediaType;
 import org.eclipse.microprofile.openapi.models.media.Schema;
+import org.eclipse.microprofile.openapi.models.servers.Server;
+import org.eclipse.microprofile.openapi.models.servers.ServerVariables;
+import org.eclipse.microprofile.openapi.models.servers.ServerVariable;
 import org.eclipse.microprofile.openapi.models.parameters.Parameter;
-import org.eclipse.microprofile.openapi.models.parameters.RequestBody;
 import org.eclipse.microprofile.openapi.models.responses.APIResponse;
 import org.eclipse.microprofile.openapi.models.responses.APIResponses;
 import org.eclipse.microprofile.openapi.models.security.SecurityRequirement;
-import org.eclipse.microprofile.openapi.models.security.SecurityScheme;
-import org.eclipse.microprofile.openapi.models.servers.Server;
-import org.eclipse.microprofile.openapi.models.servers.ServerVariable;
-import org.eclipse.microprofile.openapi.models.servers.ServerVariables;
-import org.eclipse.microprofile.openapi.models.tags.Tag;
 
 
 public class MyOASModelReaderImpl implements OASModelReader {
@@ -203,7 +204,7 @@ public class MyOASModelReaderImpl implements OASModelReader {
                             .summary("Retrieve all available airlines")
                             .operationId("getAirlines")
                             .responses(OASFactory.createObject(APIResponses.class)
-                                .addAPIResponse("404", OASFactory.createObject(APIResponse.class)
+                                .addApiResponse("404", OASFactory.createObject(APIResponse.class)
                                     .description("No airlines found")
                                     .content(OASFactory.createObject(Content.class)
                                         .addMediaType("n/a", OASFactory.createObject(MediaType.class)))))))
@@ -214,14 +215,14 @@ public class MyOASModelReaderImpl implements OASModelReader {
                             .summary("TEST SUMMARY")
                             .operationId("getTestFlights")
                             .responses(OASFactory.createObject(APIResponses.class)
-                                .addAPIResponse("200", OASFactory.createObject(APIResponse.class)
+                                .addApiResponse("200", OASFactory.createObject(APIResponse.class)
                                     .description("successful operation")
                                     .content(OASFactory.createObject(Content.class)
                                         .addMediaType("application/json", OASFactory.createObject(MediaType.class)
                                             .schema(OASFactory.createObject(Schema.class)
                                                 .type(Schema.SchemaType.ARRAY)
                                                 .ref("#/components.schemas.Flight")))))
-                                .addAPIResponse("404", OASFactory.createObject(APIResponse.class)
+                                .addApiResponse("404", OASFactory.createObject(APIResponse.class)
                                     .description("No available flights found")
                                     .content(OASFactory.createObject(Content.class)
                                         .addMediaType("n/a", OASFactory.createObject(MediaType.class)))))
@@ -275,14 +276,14 @@ public class MyOASModelReaderImpl implements OASModelReader {
                             .summary("Retrieve all bookings for current user")
                             .operationId("getAllBookings")
                             .responses(OASFactory.createObject(APIResponses.class)
-                                .addAPIResponse("200", OASFactory.createObject(APIResponse.class)
+                                .addApiResponse("200", OASFactory.createObject(APIResponse.class)
                                     .description("Bookings retrieved")
                                     .content(OASFactory.createObject(Content.class)
                                         .addMediaType("applictaion/json", OASFactory.createObject(MediaType.class)
                                             .schema(OASFactory.createObject(Schema.class)
                                                 .type(Schema.SchemaType.ARRAY)
                                                 .ref("#/components.schemas.Booking")))))
-                                .addAPIResponse("404", OASFactory.createObject(APIResponse.class)
+                                .addApiResponse("404", OASFactory.createObject(APIResponse.class)
                                     .description("No bookings found for the user"))))
                         .POST(OASFactory.createObject(Operation.class)
                             .security(new ArrayList<SecurityRequirement>())
@@ -292,7 +293,7 @@ public class MyOASModelReaderImpl implements OASModelReader {
                             .description("Create a new booking record with the booking information provided.")
                             .operationId("createBooking")
                             .responses(OASFactory.createObject(APIResponses.class)
-                                .addAPIResponse("201", OASFactory.createObject(APIResponse.class)
+                                .addApiResponse("201", OASFactory.createObject(APIResponse.class)
                                     .description("Bookings created")
                                     .content(OASFactory.createObject(Content.class)
                                         .addMediaType("text/plain", OASFactory.createObject(MediaType.class)


Test patch:
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/FilterTest.java b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/FilterTest.java
index 7ccdcbf..c903c7b 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/FilterTest.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/FilterTest.java
@@ -78,8 +78,6 @@ public class FilterTest extends AppTestBase {
         //specification states that ancestors must be invoked last.
         vr.body("paths.'/availability'.get.summary", equalTo("Retrieve all available flights"));
         vr.body("paths.'/availability'.get.operationId", equalTo("filterPathItemGetFlights"));
-        vr.body("paths.'/bookings'.post.callbacks.'bookingCallback'.'http://localhost:9080/airlines/bookings'.get.description",
-                equalTo("parent - Retrieve all bookings for current user"));
     }
     
     @RunAsClient
@@ -96,8 +94,6 @@ public class FilterTest extends AppTestBase {
         ValidatableResponse vr = callEndpoint(type);
         vr.body("paths.'/bookings/{id}'.get.summary", equalTo("filterOperation - Get a booking with ID"));
         vr.body("paths.'/bookings/{id}'.get.operationId", equalTo("getBookingById"));
-        
-        vr.body("paths.'/bookings/{id}'.get.tags", containsInAnyOrder("Reservations", "parent - Bookings"));
     }
     
     @RunAsClient
@@ -180,8 +176,6 @@ public class FilterTest extends AppTestBase {
         ValidatableResponse vr = callEndpoint(type);
         final String response201Path = "paths.'/streams'.post.responses.'201'";
         vr.body(response201Path + ".description", equalTo("filterAPIResponse - subscription successfully created"));
-        String parentChild = "paths.'/reviews'.post.responses.'201'.content.'application/json'.schema.description";
-        vr.body(parentChild, equalTo("parent - id of the new review"));
     }
     
     @RunAsClient
@@ -190,7 +184,6 @@ public class FilterTest extends AppTestBase {
         ValidatableResponse vr = callEndpoint(type);
         final String response201Path = "paths.'/streams'.post.responses.'201'";
         vr.body(response201Path + ".content.'application/json'.schema.description", equalTo("filterSchema - subscription information"));
-    
     }
     
     @RunAsClient
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java
index 57c13c0..c439c0d 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java
@@ -17,7 +17,6 @@
 package org.eclipse.microprofile.openapi.tck;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNotSame;
 import static org.testng.Assert.assertNull;
@@ -35,7 +34,6 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
 
 import org.eclipse.microprofile.openapi.OASFactory;
 import org.eclipse.microprofile.openapi.models.Components;
@@ -73,6 +71,10 @@ import org.eclipse.microprofile.openapi.models.servers.Server;
 import org.eclipse.microprofile.openapi.models.servers.ServerVariable;
 import org.eclipse.microprofile.openapi.models.servers.ServerVariables;
 import org.eclipse.microprofile.openapi.models.tags.Tag;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.testng.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.testng.annotations.Test;
 
 /**
@@ -80,7 +82,7 @@ import org.testng.annotations.Test;
  * create instances of all of the Constructible interfaces and then invokes methods (including
  * getters, setters and builders) on those instances to verify that they behave correctly.
  */
-public class ModelConstructionTest {
+public class ModelConstructionTest extends Arquillian {
     
     // Container for matched getter, setter and builder methods
     static final class Property {
@@ -150,6 +152,11 @@ public class ModelConstructionTest {
         }
     }
 
+    @Deployment
+    public static WebArchive createDeployment() {
+        return ShrinkWrap.create(WebArchive.class);
+    }
+
     @Test
     public void componentsTest() {
         final Components c = processConstructible(Components.class);
@@ -158,73 +165,46 @@ public class ModelConstructionTest {
         final Callback callbackValue = createConstructibleInstance(Callback.class);
         checkSameObject(c, c.addCallback(callbackKey, callbackValue));
         checkMapEntry(c.getCallbacks(), callbackKey, callbackValue);
-        assertEquals(c.getCallbacks().size(), 1, "The list is expected to contain one entry.");
-        c.removeCallback(callbackKey);
-        assertEquals(c.getCallbacks().size(), 0, "The list is expected to be empty.");
         
         final String exampleKey = "myExample";
         final Example exampleValue = createConstructibleInstance(Example.class);
         checkSameObject(c, c.addExample(exampleKey, exampleValue));
         checkMapEntry(c.getExamples(), exampleKey, exampleValue);
-        assertEquals(c.getExamples().size(), 1, "The list is expected to contain one entry.");
-        c.removeExample(exampleKey);
-        assertEquals(c.getExamples().size(), 0, "The list is expected to be empty.");
         
         final String headerKey = "myHeader";
         final Header headerValue = createConstructibleInstance(Header.class);
         checkSameObject(c, c.addHeader(headerKey, headerValue));
         checkMapEntry(c.getHeaders(), headerKey, headerValue);
-        assertEquals(c.getHeaders().size(), 1, "The list is expected to contain one entry.");
-        c.removeHeader(headerKey);
-        assertEquals(c.getHeaders().size(), 0, "The list is expected to be empty.");
         
         final String linkKey = "myLink";
         final Link linkValue = createConstructibleInstance(Link.class);
         checkSameObject(c, c.addLink(linkKey, linkValue));
         checkMapEntry(c.getLinks(), linkKey, linkValue);
-        assertEquals(c.getLinks().size(), 1, "The list is expected to contain one entry.");
-        c.removeLink(linkKey);
-        assertEquals(c.getLinks().size(), 0, "The list is expected to be empty.");
         
         final String parameterKey = "myParameter";
         final Parameter parameterValue = createConstructibleInstance(Parameter.class);
         checkSameObject(c, c.addParameter(parameterKey, parameterValue));
         checkMapEntry(c.getParameters(), parameterKey, parameterValue);
-        assertEquals(c.getParameters().size(), 1, "The list is expected to contain one entry.");
-        c.removeParameter(parameterKey);
-        assertEquals(c.getParameters().size(), 0, "The list is expected to be empty.");
         
         final String requestBodyKey = "myRequestBody";
         final RequestBody requestBodyValue = createConstructibleInstance(RequestBody.class);
         checkSameObject(c, c.addRequestBody(requestBodyKey, requestBodyValue));
         checkMapEntry(c.getRequestBodies(), requestBodyKey, requestBodyValue);
-        assertEquals(c.getRequestBodies().size(), 1, "The list is expected to contain one entry.");
-        c.removeRequestBody(requestBodyKey);
-        assertEquals(c.getRequestBodies().size(), 0, "The list is expected to be empty.");
         
         final String responseKey = "myResponse";
         final APIResponse responseValue = createConstructibleInstance(APIResponse.class);
         checkSameObject(c, c.addResponse(responseKey, responseValue));
         checkMapEntry(c.getResponses(), responseKey, responseValue);
-        assertEquals(c.getResponses().size(), 1, "The list is expected to contain one entry.");
-        c.removeResponse(responseKey);
-        assertEquals(c.getResponses().size(), 0, "The list is expected to be empty.");
         
         final String schemaKey = "mySchema";
         final Schema schemaValue = createConstructibleInstance(Schema.class);
         checkSameObject(c, c.addSchema(schemaKey, schemaValue));
         checkMapEntry(c.getSchemas(), schemaKey, schemaValue);
-        assertEquals(c.getSchemas().size(), 1, "The list is expected to contain one entry.");
-        c.removeSchema(schemaKey);
-        assertEquals(c.getSchemas().size(), 0, "The list is expected to be empty.");
         
         final String securitySchemeKey = "mySecurityScheme";
         final SecurityScheme securitySchemeValue = createConstructibleInstance(SecurityScheme.class);
         checkSameObject(c, c.addSecurityScheme(securitySchemeKey, securitySchemeValue));
         checkMapEntry(c.getSecuritySchemes(), securitySchemeKey, securitySchemeValue);
-        assertEquals(c.getSecuritySchemes().size(), 1, "The list is expected to contain one entry.");
-        c.removeSecurityScheme(securitySchemeKey);
-        assertEquals(c.getSecuritySchemes().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
@@ -239,23 +219,14 @@ public class ModelConstructionTest {
         final SecurityRequirement sr = createConstructibleInstance(SecurityRequirement.class);
         checkSameObject(o, o.addSecurityRequirement(sr));
         checkListEntry(o.getSecurity(), sr);
-        assertEquals(o.getSecurity().size(), 1, "The list is expected to contain one entry.");
-        o.removeSecurityRequirement(sr);
-        assertEquals(o.getSecurity().size(), 0, "The list is expected to be empty.");
         
         final Server s = createConstructibleInstance(Server.class);
         checkSameObject(o, o.addServer(s));
         checkListEntry(o.getServers(), s);
-        assertEquals(o.getServers().size(), 1, "The list is expected to contain one entry.");
-        o.removeServer(s);
-        assertEquals(o.getServers().size(), 0, "The list is expected to be empty.");
         
         final Tag t = createConstructibleInstance(Tag.class);
         checkSameObject(o, o.addTag(t));
         checkListEntry(o.getTags(), t);
-        assertEquals(o.getTags().size(), 1, "The list is expected to contain one entry.");
-        o.removeTag(t);
-        assertEquals(o.getTags().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
@@ -265,38 +236,18 @@ public class ModelConstructionTest {
         final Parameter p = createConstructibleInstance(Parameter.class);
         checkSameObject(o, o.addParameter(p));
         checkListEntry(o.getParameters(), p);
-        assertEquals(o.getParameters().size(), 1, "The list is expected to contain one entry.");
-        o.removeParameter(p);
-        assertEquals(o.getParameters().size(), 0, "The list is expected to be empty.");
         
         final SecurityRequirement sr = createConstructibleInstance(SecurityRequirement.class);
         checkSameObject(o, o.addSecurityRequirement(sr));
         checkListEntry(o.getSecurity(), sr);
-        assertEquals(o.getSecurity().size(), 1, "The list is expected to contain one entry.");
-        o.removeSecurityRequirement(sr);
-        assertEquals(o.getSecurity().size(), 0, "The list is expected to be empty.");
         
         final Server s = createConstructibleInstance(Server.class);
         checkSameObject(o, o.addServer(s));
         checkListEntry(o.getServers(), s);
-        assertEquals(o.getServers().size(), 1, "The list is expected to contain one entry.");
-        o.removeServer(s);
-        assertEquals(o.getServers().size(), 0, "The list is expected to be empty.");
         
         final String tag = new String("myTag");
         checkSameObject(o, o.addTag(tag));
         checkListEntry(o.getTags(), tag);
-        assertEquals(o.getTags().size(), 1, "The list is expected to contain one entry.");
-        o.removeTag(tag);
-        assertEquals(o.getTags().size(), 0, "The list is expected to be empty.");
-        
-        final String callbackKey = "myCallback";
-        final Callback callbackValue = createConstructibleInstance(Callback.class);
-        checkSameObject(o, o.addCallback(callbackKey, callbackValue));
-        checkMapEntry(o.getCallbacks(), callbackKey, callbackValue);
-        assertEquals(o.getCallbacks().size(), 1, "The list is expected to contain one entry.");
-        o.removeCallback(callbackKey);
-        assertEquals(o.getCallbacks().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
@@ -306,16 +257,10 @@ public class ModelConstructionTest {
         final Parameter p = createConstructibleInstance(Parameter.class);
         checkSameObject(pi, pi.addParameter(p));
         checkListEntry(pi.getParameters(), p);
-        assertEquals(pi.getParameters().size(), 1, "The list is expected to contain one entry.");
-        pi.removeParameter(p);
-        assertEquals(pi.getParameters().size(), 0, "The list is expected to be empty.");
         
         final Server s = createConstructibleInstance(Server.class);
         checkSameObject(pi, pi.addServer(s));
         checkListEntry(pi.getServers(), s);
-        assertEquals(pi.getServers().size(), 1, "The list is expected to contain one entry.");
-        pi.removeServer(s);
-        assertEquals(pi.getServers().size(), 0, "The list is expected to be empty.");
         
         final Operation o1 = createConstructibleInstance(Operation.class);
         checkSameObject(pi, pi.GET(o1));
@@ -363,41 +308,17 @@ public class ModelConstructionTest {
     public void pathsTest() {
         final Paths p = processConstructible(Paths.class);
         
-        final String pathItemKey = "/myPathItem";
-        assertFalse(p.hasPathItem(pathItemKey), pathItemKey + " is absent in the map");
+        final String pathItemKey = "myPathItem";
         final PathItem pathItemValue = createConstructibleInstance(PathItem.class);
         checkSameObject(p, p.addPathItem(pathItemKey, pathItemValue));
-        assertTrue(p.hasPathItem(pathItemKey), pathItemKey + " is present in the map");
-        assertSame(p.getPathItem(pathItemKey), pathItemValue, 
-                "The value associated with the key: " + pathItemKey + " is expected to be the same one that was added.");
         checkMapEntry(p, pathItemKey, pathItemValue);
-        checkMapEntry(p.getPathItems(), pathItemKey, pathItemValue);
         
-        final String pathItemKey2 = "/myPathItem2";
-        assertFalse(p.hasPathItem(pathItemKey2), pathItemKey2 + " is absent in the map");
+        final String pathItemKey2 = "myPathItem2";
         final PathItem pathItemValue2 = createConstructibleInstance(PathItem.class);
         assertNull(p.put(pathItemKey2, pathItemValue2), "No previous mapping expected.");
-        assertTrue(p.hasPathItem(pathItemKey2), pathItemKey2 + " is present in the map");
-        assertSame(p.getPathItem(pathItemKey2), pathItemValue2, 
-                "The value associated with the key: " + pathItemKey2 + " is expected to be the same one that was added.");
         checkMapEntry(p, pathItemKey2, pathItemValue2);
-        checkMapEntry(p.getPathItems(), pathItemKey2, pathItemValue2);
         
         assertEquals(p.size(), 2, "The map is expected to contain two entries.");
-        assertEquals(p.getPathItems().size(), 2, "The map is expected to contain two entries.");
-        
-        p.removePathItem(pathItemKey);
-        assertFalse(p.hasPathItem(pathItemKey), pathItemKey + " is absent in the map");
-        assertEquals(p.size(), 1, "The map is expected to contain one entry.");
-        assertEquals(p.getPathItems().size(), 1, "The map is expected to contain one entry.");
-        
-        p.remove(pathItemKey2);
-        assertFalse(p.hasPathItem(pathItemKey2), pathItemKey + " is absent in the map");
-        assertEquals(p.size(), 0, "The map is expected to contain 0 entries.");
-        assertEquals(p.getPathItems().size(), 0, "The map is expected to contain 0 entries.");
-        
-        final PathItem otherValue = createConstructibleInstance(PathItem.class);
-        checkMapImmutable(p, Paths::getPathItems, "/otherPathItem", otherValue);
     }
     
     @Test
@@ -405,40 +326,16 @@ public class ModelConstructionTest {
         final Callback c = processConstructible(Callback.class);
         
         final String pathItemKey = "myPathItem";
-        assertFalse(c.hasPathItem(pathItemKey), pathItemKey + " is absent in the map");
         final PathItem pathItemValue = createConstructibleInstance(PathItem.class);
         checkSameObject(c, c.addPathItem(pathItemKey, pathItemValue));
-        assertTrue(c.hasPathItem(pathItemKey), pathItemKey + " is present in the map");
-        assertSame(c.getPathItem(pathItemKey), pathItemValue, 
-                "The value associated with the key: " + pathItemKey + " is expected to be the same one that was added.");
         checkMapEntry(c, pathItemKey, pathItemValue);
-        checkMapEntry(c.getPathItems(), pathItemKey, pathItemValue);
         
         final String pathItemKey2 = "myPathItem2";
-        assertFalse(c.hasPathItem(pathItemKey2), pathItemKey2 + " is absent in the map");
         final PathItem pathItemValue2 = createConstructibleInstance(PathItem.class);
         assertNull(c.put(pathItemKey2, pathItemValue2), "No previous mapping expected.");
-        assertTrue(c.hasPathItem(pathItemKey2), pathItemKey2 + " is present in the map");
-        assertSame(c.getPathItem(pathItemKey2), pathItemValue2, 
-                "The value associated with the key: " + pathItemKey2 + " is expected to be the same one that was added.");
         checkMapEntry(c, pathItemKey2, pathItemValue2);
-        checkMapEntry(c.getPathItems(), pathItemKey2, pathItemValue2);
         
         assertEquals(c.size(), 2, "The map is expected to contain two entries.");
-        assertEquals(c.getPathItems().size(), 2, "The map is expected to contain two entries.");
-        
-        c.removePathItem(pathItemKey);
-        assertFalse(c.hasPathItem(pathItemKey), pathItemKey + " is absent in the map");
-        assertEquals(c.size(), 1, "The map is expected to contain one entry.");
-        assertEquals(c.getPathItems().size(), 1, "The map is expected to contain one entry.");
-        
-        c.remove(pathItemKey2);
-        assertFalse(c.hasPathItem(pathItemKey2), pathItemKey + " is absent in the map");
-        assertEquals(c.size(), 0, "The map is expected to contain 0 entries.");
-        assertEquals(c.getPathItems().size(), 0, "The map is expected to contain 0 entries.");
-        
-        final PathItem otherValue = createConstructibleInstance(PathItem.class);
-        checkMapImmutable(c, Callback::getPathItems, "otherPathItem", otherValue);
     }
     
     @Test
@@ -454,9 +351,6 @@ public class ModelConstructionTest {
         final Example exampleValue = createConstructibleInstance(Example.class);
         checkSameObject(h, h.addExample(exampleKey, exampleValue));
         checkMapEntry(h.getExamples(), exampleKey, exampleValue);
-        assertEquals(h.getExamples().size(), 1, "The list is expected to contain one entry.");
-        h.removeExample(exampleKey);
-        assertEquals(h.getExamples().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
@@ -482,50 +376,23 @@ public class ModelConstructionTest {
         final String parameterValue = "$request.parameter.id";
         checkSameObject(l, l.addParameter(parameterKey, parameterValue));
         checkMapEntry(l.getParameters(), parameterKey, parameterValue);
-        assertEquals(l.getParameters().size(), 1, "The list is expected to contain one entry.");
-        l.removeParameter(parameterKey);
-        assertEquals(l.getParameters().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
     public void contentTest() {
         final Content c = processConstructible(Content.class);
         
-        final String mediaTypeKey = "application/json";
-        assertFalse(c.hasMediaType(mediaTypeKey), mediaTypeKey + " is absent in the map");
+        final String mediaTypeKey = "myPathItem";
         final MediaType mediaTypeValue = createConstructibleInstance(MediaType.class);
         checkSameObject(c, c.addMediaType(mediaTypeKey, mediaTypeValue));
-        assertTrue(c.hasMediaType(mediaTypeKey), mediaTypeKey + " is present in the map");
-        assertSame(c.getMediaType(mediaTypeKey), mediaTypeValue, 
-                "The value associated with the key: " + mediaTypeKey + " is expected to be the same one that was added.");
         checkMapEntry(c, mediaTypeKey, mediaTypeValue);
-        checkMapEntry(c.getMediaTypes(), mediaTypeKey, mediaTypeValue);
         
-        final String mediaTypeKey2 = "*/*";
-        assertFalse(c.hasMediaType(mediaTypeKey2), mediaTypeKey2 + " is absent in the map");
+        final String mediaTypeKey2 = "myPathItem2";
         final MediaType mediaTypeValue2 = createConstructibleInstance(MediaType.class);
         assertNull(c.put(mediaTypeKey2, mediaTypeValue2), "No previous mapping expected.");
-        assertTrue(c.hasMediaType(mediaTypeKey2), mediaTypeKey2 + " is present in the map");
-        assertSame(c.getMediaType(mediaTypeKey2), mediaTypeValue2, 
-                "The value associated with the key: " + mediaTypeKey2 + " is expected to be the same one that was added.");
         checkMapEntry(c, mediaTypeKey2, mediaTypeValue2);
-        checkMapEntry(c.getMediaTypes(), mediaTypeKey2, mediaTypeValue2);
         
         assertEquals(c.size(), 2, "The map is expected to contain two entries.");
-        assertEquals(c.getMediaTypes().size(), 2, "The map is expected to contain two entries.");
-        
-        c.removeMediaType(mediaTypeKey);
-        assertFalse(c.hasMediaType(mediaTypeKey), mediaTypeKey + " is absent in the map");
-        assertEquals(c.size(), 1, "The map is expected to contain one entry.");
-        assertEquals(c.getMediaTypes().size(), 1, "The map is expected to contain one entry.");
-        
-        c.remove(mediaTypeKey2);
-        assertFalse(c.hasMediaType(mediaTypeKey2), mediaTypeKey + " is absent in the map");
-        assertEquals(c.size(), 0, "The map is expected to contain 0 entries.");
-        assertEquals(c.getMediaTypes().size(), 0, "The map is expected to contain 0 entries.");
-        
-        final MediaType otherValue = createConstructibleInstance(MediaType.class);
-        checkMapImmutable(c, Content::getMediaTypes, "application/txt", otherValue);
     }
     
     @Test
@@ -536,22 +403,11 @@ public class ModelConstructionTest {
         final String value = new String("myValue");
         checkSameObject(d, d.addMapping(key, value));
         checkMapEntry(d.getMapping(), key, value);
-        assertEquals(d.getMapping().size(), 1, "The list is expected to contain one entry.");
-        d.removeMapping(key);
-        assertEquals(d.getMapping().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
     public void encodingTest() {
-        Encoding e = processConstructible(Encoding.class);
-        
-        final String headerKey = "myHeaderKey";
-        final Header headerValue = createConstructibleInstance(Header.class);
-        checkSameObject(e, e.addHeader(headerKey, headerValue));
-        checkMapEntry(e.getHeaders(), headerKey, headerValue);
-        assertEquals(e.getHeaders().size(), 1, "The list is expected to contain one entry.");
-        e.removeHeader(headerKey);
-        assertEquals(e.getHeaders().size(), 0, "The list is expected to be empty.");
+        processConstructible(Encoding.class);
     }
     
     @Test
@@ -562,79 +418,41 @@ public class ModelConstructionTest {
         final Encoding encodingValue = createConstructibleInstance(Encoding.class);
         checkSameObject(mt, mt.addEncoding(encodingKey, encodingValue));
         checkMapEntry(mt.getEncoding(), encodingKey, encodingValue);
-        assertEquals(mt.getEncoding().size(), 1, "The list is expected to contain one entry.");
-        mt.removeEncoding(encodingKey);
-        assertEquals(mt.getEncoding().size(), 0, "The list is expected to be empty.");
         
         final String exampleKey = "myExample";
         final Example exampleValue = createConstructibleInstance(Example.class);
         checkSameObject(mt, mt.addExample(exampleKey, exampleValue));
         checkMapEntry(mt.getExamples(), exampleKey, exampleValue);
-        assertEquals(mt.getExamples().size(), 1, "The list is expected to contain one entry.");
-        mt.removeExample(exampleKey);
-        assertEquals(mt.getExamples().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
     public void schemaTest() {
         final Schema s = processConstructible(Schema.class);
         
-        final Schema ap = createConstructibleInstance(Schema.class);
-        checkSameObject(s, s.additionalPropertiesSchema(ap));
-        checkSameObject(ap, s.getAdditionalPropertiesSchema());
-        assertEquals(s.getAdditionalPropertiesBoolean(), null, "AdditionalProperties (Boolean type) is expected to be null");
-        checkSameObject(s, s.additionalPropertiesBoolean(Boolean.TRUE));
-        assertEquals(s.getAdditionalPropertiesBoolean(), Boolean.TRUE, "AdditionalProperties (Boolean type) is expected to be true");
-        assertEquals(s.getAdditionalPropertiesSchema(), null, "AdditionalProperties (Schema type) is expected to be null");
-        s.setAdditionalPropertiesBoolean(Boolean.FALSE);
-        assertEquals(s.getAdditionalPropertiesBoolean(), Boolean.FALSE, "AdditionalProperties (Boolean type) is expected to be false");
-        assertEquals(s.getAdditionalPropertiesSchema(), null, "AdditionalProperties (Schema type) is expected to be null");
-        s.setAdditionalPropertiesSchema(null);
-        assertEquals(s.getAdditionalPropertiesBoolean(), null, "AdditionalProperties (Boolean type) is expected to be null");
-        assertEquals(s.getAdditionalPropertiesSchema(), null, "AdditionalProperties (Schema type) is expected to be null");
-        
         final Schema allOf = createConstructibleInstance(Schema.class);
         checkSameObject(s, s.addAllOf(allOf));
         checkListEntry(s.getAllOf(), allOf);
-        assertEquals(s.getAllOf().size(), 1, "The list is expected to contain one entry.");
-        s.removeAllOf(allOf);
-        assertEquals(s.getAllOf().size(), 0, "The list is expected to be empty.");
         
         final Schema anyOf = createConstructibleInstance(Schema.class);
         checkSameObject(s, s.addAnyOf(anyOf));
         checkListEntry(s.getAnyOf(), anyOf);
-        assertEquals(s.getAnyOf().size(), 1, "The list is expected to contain one entry.");
-        s.removeAnyOf(anyOf);
-        assertEquals(s.getAnyOf().size(), 0, "The list is expected to be empty.");
         
         final String enumeration = new String("enumValue");
         checkSameObject(s, s.addEnumeration(enumeration));
         checkListEntry(s.getEnumeration(), enumeration);
-        assertEquals(s.getEnumeration().size(), 1, "The list is expected to contain one entry.");
-        s.removeEnumeration(enumeration);
-        assertEquals(s.getEnumeration().size(), 0, "The list is expected to be empty.");
         
         final Schema oneOf = createConstructibleInstance(Schema.class);
         checkSameObject(s, s.addOneOf(oneOf));
         checkListEntry(s.getOneOf(), oneOf);
-        assertEquals(s.getOneOf().size(), 1, "The list is expected to contain one entry.");
-        s.removeOneOf(oneOf);
-        assertEquals(s.getOneOf().size(), 0, "The list is expected to be empty.");
         
         final String propertySchemaKey = "myPropertySchemaKey";
         final Schema propertySchemaValue = createConstructibleInstance(Schema.class);
         checkSameObject(s, s.addProperty(propertySchemaKey, propertySchemaValue));
         checkMapEntry(s.getProperties(), propertySchemaKey, propertySchemaValue);
-        assertEquals(s.getProperties().size(), 1, "The list is expected to contain one entry.");
-        s.removeProperty(propertySchemaKey);
-        assertEquals(s.getProperties().size(), 0, "The list is expected to be empty.");
         
         final String required = new String("required");
         checkSameObject(s, s.addRequired(required));
         checkListEntry(s.getRequired(), required);
-        assertEquals(s.getRequired().size(), 1, "The list is expected to contain one entry.");
-        s.removeRequired(required);
-        assertEquals(s.getRequired().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
@@ -650,9 +468,6 @@ public class ModelConstructionTest {
         final Example exampleValue = createConstructibleInstance(Example.class);
         checkSameObject(p, p.addExample(exampleKey, exampleValue));
         checkMapEntry(p.getExamples(), exampleKey, exampleValue);
-        assertEquals(p.getExamples().size(), 1, "The list is expected to contain one entry.");
-        p.removeExample(exampleKey);
-        assertEquals(p.getExamples().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
@@ -668,79 +483,28 @@ public class ModelConstructionTest {
         final Header headerValue = createConstructibleInstance(Header.class);
         checkSameObject(response, response.addHeader(headerKey, headerValue));
         checkMapEntry(response.getHeaders(), headerKey, headerValue);
-        assertEquals(response.getHeaders().size(), 1, "The list is expected to contain one entry.");
-        response.removeHeader(headerKey);
-        assertEquals(response.getHeaders().size(), 0, "The list is expected to be empty.");
         
         final String linkKey = "myLinkKey";
         final Link linkValue = createConstructibleInstance(Link.class);
         checkSameObject(response, response.addLink(linkKey, linkValue));
         checkMapEntry(response.getLinks(), linkKey, linkValue);
-        assertEquals(response.getLinks().size(), 1, "The list is expected to contain one entry.");
-        response.removeLink(linkKey);
-        assertEquals(response.getLinks().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
     public void apiResponsesTest() {
         final APIResponses responses = processConstructible(APIResponses.class);
         
-        responses.remove(APIResponses.DEFAULT);
-        assertEquals(responses.size(), 0, "The map is expected to contain two entries.");
-        
-        final String responseKey = "200";
-        assertFalse(responses.hasAPIResponse(responseKey), responseKey + " is absent in the map");
-        final APIResponse pathItemValue = createConstructibleInstance(APIResponse.class);
-        checkSameObject(responses, responses.addAPIResponse(responseKey, pathItemValue));
-        assertTrue(responses.hasAPIResponse(responseKey), responseKey + " is present in the map");
-        assertSame(responses.getAPIResponse(responseKey), pathItemValue, 
-                "The value associated with the key: " + responseKey + " is expected to be the same one that was added.");
-        checkMapEntry(responses, responseKey, pathItemValue);
-        checkMapEntry(responses.getAPIResponses(), responseKey, pathItemValue);
-        
-        final String responseKey2 = "4XX";
-        assertFalse(responses.hasAPIResponse(responseKey2), responseKey2 + " is absent in the map");
-        final APIResponse pathItemValue2 = createConstructibleInstance(APIResponse.class);
-        assertNull(responses.put(responseKey2, pathItemValue2), "No previous mapping expected.");
-        assertTrue(responses.hasAPIResponse(responseKey2), responseKey2 + " is present in the map");
-        assertSame(responses.getAPIResponse(responseKey2), pathItemValue2, 
-                "The value associated with the key: " + responseKey2 + " is expected to be the same one that was added.");
-        checkMapEntry(responses, responseKey2, pathItemValue2);
-        checkMapEntry(responses.getAPIResponses(), responseKey2, pathItemValue2);
+        final String responseKey = "myResponse";
+        final APIResponse responseValue = createConstructibleInstance(APIResponse.class);
+        checkSameObject(responses, responses.addApiResponse(responseKey, responseValue));
+        checkMapEntry(responses, responseKey, responseValue);
+        
+        final String responseKey2 = "myResponse2";
+        final APIResponse responseValue2 = createConstructibleInstance(APIResponse.class);
+        assertNull(responses.put(responseKey2, responseValue2), "No previous mapping expected.");
+        checkMapEntry(responses, responseKey2, responseValue2);
         
         assertEquals(responses.size(), 2, "The map is expected to contain two entries.");
-        assertEquals(responses.getAPIResponses().size(), 2, "The map is expected to contain two entries.");
-        
-        responses.removeAPIResponse(responseKey);
-        assertFalse(responses.hasAPIResponse(responseKey), responseKey + " is absent in the map");
-        assertEquals(responses.size(), 1, "The map is expected to contain one entry.");
-        assertEquals(responses.getAPIResponses().size(), 1, "The map is expected to contain one entry.");
-        
-        responses.remove(responseKey2);
-        assertFalse(responses.hasAPIResponse(responseKey2), responseKey + " is absent in the map");
-        assertEquals(responses.size(), 0, "The map is expected to contain 0 entries.");
-        assertEquals(responses.getAPIResponses().size(), 0, "The map is expected to contain 0 entries.");
-        
-        final APIResponse otherValue = createConstructibleInstance(APIResponse.class);
-        checkMapImmutable(responses, APIResponses::getAPIResponses, "500", otherValue);
-        
-        assertNull(responses.getDefaultValue(), "No default value expected.");
-        final String responseKey3 = APIResponses.DEFAULT;
-        final APIResponse responseValue3 = createConstructibleInstance(APIResponse.class);
-        assertNull(responses.put(responseKey3, responseValue3), "No previous mapping expected.");
-        checkMapEntry(responses, responseKey3, responseValue3);
-        checkSameObject(responseValue3, responses.getDefaultValue());
-        
-        assertEquals(responses.size(), 1, "The map is expected to contain one entry.");
-        
-        responses.setDefaultValue(null);
-        assertNull(responses.get(APIResponses.DEFAULT), "No default value expected.");
-        assertNull(responses.getDefaultValue(), "No default value expected.");
-        
-        final APIResponse responseValue4 = createConstructibleInstance(APIResponse.class);
-        responses.setDefaultValue(responseValue4);
-        checkMapEntry(responses, APIResponses.DEFAULT, responseValue4);
-        checkSameObject(responseValue4, responses.getDefaultValue());
     }
     
     @Test
@@ -758,81 +522,33 @@ public class ModelConstructionTest {
         final Scopes s = processConstructible(Scopes.class);
         
         final String scopeKey = "myScope";
-        assertFalse(s.hasScope(scopeKey), scopeKey + " is absent in the map");
         final String scopeValue = new String("myDescription");
         checkSameObject(s, s.addScope(scopeKey, scopeValue));
-        assertTrue(s.hasScope(scopeKey), scopeKey + " is present in the map");
-        assertSame(s.getScope(scopeKey), scopeValue, 
-                "The value associated with the key: " + scopeKey + " is expected to be the same one that was added.");
         checkMapEntry(s, scopeKey, scopeValue);
-        checkMapEntry(s.getScopes(), scopeKey, scopeValue);
         
         final String scopeKey2 = "myScope2";
-        assertFalse(s.hasScope(scopeKey2), scopeKey2 + " is absent in the map");
         final String scopeValue2 = new String("myDescription2");
         assertNull(s.put(scopeKey2, scopeValue2), "No previous mapping expected.");
-        assertTrue(s.hasScope(scopeKey2), scopeKey2 + " is present in the map");
-        assertSame(s.getScope(scopeKey2), scopeValue2, 
-                "The value associated with the key: " + scopeKey2 + " is expected to be the same one that was added.");
         checkMapEntry(s, scopeKey2, scopeValue2);
-        checkMapEntry(s.getScopes(), scopeKey2, scopeValue2);
         
         assertEquals(s.size(), 2, "The map is expected to contain two entries.");
-        assertEquals(s.getScopes().size(), 2, "The map is expected to contain two entries.");
-        
-        s.removeScope(scopeKey);
-        assertFalse(s.hasScope(scopeKey), scopeKey + " is absent in the map");
-        assertEquals(s.size(), 1, "The map is expected to contain one entry.");
-        assertEquals(s.getScopes().size(), 1, "The map is expected to contain one entry.");
-        
-        s.remove(scopeKey2);
-        assertFalse(s.hasScope(scopeKey2), scopeKey + " is absent in the map");
-        assertEquals(s.size(), 0, "The map is expected to contain 0 entries.");
-        assertEquals(s.getScopes().size(), 0, "The map is expected to contain 0 entries.");
-        
-        final String otherValue = new String("otherDescription");
-        checkMapImmutable(s, Scopes::getScopes, "otherScope", otherValue);
     }
     
     @Test
     public void securityRequirementTest() {
         final SecurityRequirement sr = processConstructible(SecurityRequirement.class);
         
-        final String schemeKey = "myScheme";
-        assertFalse(sr.hasScheme(schemeKey), schemeKey + " is absent in the map");
+        final String schemeKey = "myResponse";
         final List<String> schemeValue = new ArrayList<String>();
         checkSameObject(sr, sr.addScheme(schemeKey, schemeValue));
-        assertTrue(sr.hasScheme(schemeKey), schemeKey + " is present in the map");
-        assertSame(sr.getScheme(schemeKey), schemeValue, 
-                "The value associated with the key: " + schemeKey + " is expected to be the same one that was added.");
         checkMapEntry(sr, schemeKey, schemeValue);
-        checkMapEntry(sr.getSchemes(), schemeKey, schemeValue);
         
-        final String schemeKey2 = "myScheme2";
-        assertFalse(sr.hasScheme(schemeKey2), schemeKey2 + " is absent in the map");
+        final String schemeKey2 = "myResponse2";
         final List<String> schemeValue2 = new ArrayList<String>();
         assertNull(sr.put(schemeKey2, schemeValue2), "No previous mapping expected.");
-        assertTrue(sr.hasScheme(schemeKey2), schemeKey2 + " is present in the map");
-        assertSame(sr.getScheme(schemeKey2), schemeValue2, 
-                "The value associated with the key: " + schemeKey2 + " is expected to be the same one that was added.");
         checkMapEntry(sr, schemeKey2, schemeValue2);
-        checkMapEntry(sr.getSchemes(), schemeKey2, schemeValue2);
         
         assertEquals(sr.size(), 2, "The map is expected to contain two entries.");
-        assertEquals(sr.getSchemes().size(), 2, "The map is expected to contain two entries.");
-        
-        sr.removeScheme(schemeKey);
-        assertFalse(sr.hasScheme(schemeKey), schemeKey + " is absent in the map");
-        assertEquals(sr.size(), 1, "The map is expected to contain one entry.");
-        assertEquals(sr.getSchemes().size(), 1, "The map is expected to contain one entry.");
-        
-        sr.remove(schemeKey2);
-        assertFalse(sr.hasScheme(schemeKey2), schemeKey + " is absent in the map");
-        assertEquals(sr.size(), 0, "The map is expected to contain 0 entries.");
-        assertEquals(sr.getSchemes().size(), 0, "The map is expected to contain 0 entries.");
-        
-        final List<String> otherValue = new ArrayList<String>();
-        checkMapImmutable(sr, SecurityRequirement::getSchemes, "otherScheme", otherValue);
     }
     
     @Test
@@ -852,9 +568,6 @@ public class ModelConstructionTest {
         final String enumeration = new String("enumValue");
         checkSameObject(sv, sv.addEnumeration(enumeration));
         checkListEntry(sv.getEnumeration(), enumeration);
-        assertEquals(sv.getEnumeration().size(), 1, "The list is expected to contain one entry.");
-        sv.removeEnumeration(enumeration);
-        assertEquals(sv.getEnumeration().size(), 0, "The list is expected to be empty.");
     }
     
     @Test
@@ -862,40 +575,16 @@ public class ModelConstructionTest {
         final ServerVariables svs = processConstructible(ServerVariables.class);
         
         final String varKey = "myServerVariable";
-        assertFalse(svs.hasServerVariable(varKey), varKey + " is absent in the map");
         final ServerVariable varValue = createConstructibleInstance(ServerVariable.class);
         checkSameObject(svs, svs.addServerVariable(varKey, varValue));
-        assertTrue(svs.hasServerVariable(varKey), varKey + " is present in the map");
-        assertSame(svs.getServerVariable(varKey), varValue, 
-                "The value associated with the key: " + varKey + " is expected to be the same one that was added.");
         checkMapEntry(svs, varKey, varValue);
-        checkMapEntry(svs.getServerVariables(), varKey, varValue);
         
         final String varKey2 = "myServerVariable2";
-        assertFalse(svs.hasServerVariable(varKey2), varKey2 + " is absent in the map");
         final ServerVariable varValue2 = createConstructibleInstance(ServerVariable.class);
         assertNull(svs.put(varKey2, varValue2), "No previous mapping expected.");
-        assertTrue(svs.hasServerVariable(varKey2), varKey2 + " is present in the map");
-        assertSame(svs.getServerVariable(varKey2), varValue2, 
-                "The value associated with the key: " + varKey2 + " is expected to be the same one that was added.");
         checkMapEntry(svs, varKey2, varValue2);
-        checkMapEntry(svs.getServerVariables(), varKey2, varValue2);
         
         assertEquals(svs.size(), 2, "The map is expected to contain two entries.");
-        assertEquals(svs.getServerVariables().size(), 2, "The map is expected to contain two entries.");
-        
-        svs.removeServerVariable(varKey);
-        assertFalse(svs.hasServerVariable(varKey), varKey + " is absent in the map");
-        assertEquals(svs.size(), 1, "The map is expected to contain one entry.");
-        assertEquals(svs.getServerVariables().size(), 1, "The map is expected to contain one entry.");
-        
-        svs.remove(varKey2);
-        assertFalse(svs.hasServerVariable(varKey2), varKey + " is absent in the map");
-        assertEquals(svs.size(), 0, "The map is expected to contain 0 entries.");
-        assertEquals(svs.getServerVariables().size(), 0, "The map is expected to contain 0 entries.");
-        
-        final ServerVariable otherValue = createConstructibleInstance(ServerVariable.class);
-        checkMapImmutable(svs, ServerVariables::getServerVariables, "otherServerVariable", otherValue);
     }
     
     @Test
@@ -906,7 +595,7 @@ public class ModelConstructionTest {
     private <T extends Constructible> T processConstructible(Class<T> clazz) {
         final T o = createConstructibleInstance(clazz);
         if (o instanceof Extensible && Extensible.class.isAssignableFrom(clazz)) {
-            processExtensible((Extensible<?>) o);
+            processExtensible((Extensible) o);
         }
         if (o instanceof Reference && Reference.class.isAssignableFrom(clazz)) {
             processReference((Reference<?>) o);
@@ -930,7 +619,7 @@ public class ModelConstructionTest {
         return o1;
     }
     
-    private void processExtensible(Extensible<?> e) {
+    private void processExtensible(Extensible e) {
         final String extensionName1 = "x-" + e.getClass().getName() + "-1";
         final Object obj1 = new Object();
         final String extensionName2 = "x-" + e.getClass().getName() + "-2";
@@ -946,21 +635,12 @@ public class ModelConstructionTest {
                 "The value associated with the key: " + extensionName1 + " is expected to be the same one that was added.");
         assertSame(map.get(extensionName2), obj2,
                 "The value associated with the key: " + extensionName2 + " is expected to be the same one that was added.");
-        e.removeExtension(extensionName1);
-        assertEquals(e.getExtensions().size(), 1, "The extensions map is expected to contain one entry.");
         // Check that the extension map can be replaced with the setter and that it is returned by the getter.
         final Map<String, Object> newMap = new HashMap<>();
         e.setExtensions(newMap);
         final Map<String, Object> map2 = e.getExtensions();
         assertEquals(map2.size(), 0, "The extensions map is expected to contain no entries.");
-        assertEquals(map2, newMap, "The return value of getExtensions() is expected to be the same value that was set.");
-        // Check that the extension map can be replaced with the builder method and that it is returned by the getter.
-        final Map<String, Object> newOtherMap = new HashMap<>();
-        newOtherMap.put("x-test", 42);
-        e.setExtensions(newOtherMap);
-        final Map<String, Object> map3 = e.getExtensions();
-        assertEquals(map3.size(), 1, "The extensions map is expected to contain one entry.");
-        assertEquals(map3, newOtherMap, "The return value of getExtensions() is expected to be the same value that was set.");
+        assertSame(map2, newMap, "The return value of getExtensions() is expected to be the same value that was set.");
     }
     
     private void processReference(Reference<?> r) {
@@ -993,7 +673,7 @@ public class ModelConstructionTest {
     private void processConstructibleProperty(Constructible o, Property p, Class<?> enclosingInterface) {
         final Object value1 = getInstanceOf(p.getType(), false);
         p.invokeSetter(o, value1);
-        if (!p.isPrimitive() && !p.isCompatible(Map.class) && !p.isCompatible(List.class)) {
+        if (!p.isPrimitive()) {
             assertSame(p.invokeGetter(o), value1, "The return value of the getter method for property \"" + 
                     p.getName() + "\" of interface \"" + enclosingInterface.getName() +
                     "\" is expected to be the same as the value that was set.");
@@ -1009,7 +689,7 @@ public class ModelConstructionTest {
             assertSame(self, o, "The return value of the builder method for property \"" + 
                     p.getName() + "\" of interface \"" + enclosingInterface.getName() +
                     "\" is expected to be the same as the value that was set.");
-            if (!p.isPrimitive() && !p.isCompatible(Map.class) && !p.isCompatible(List.class)) {
+            if (!p.isPrimitive()) {
                 assertSame(p.invokeGetter(o), value2, "The return value of the getter method for property \"" + 
                         p.getName() + "\" of interface \"" + enclosingInterface.getName() +
                         "\" is expected to be the same as the value that was set.");
@@ -1180,23 +860,6 @@ public class ModelConstructionTest {
         assertTrue(map.containsKey(key), "The map is expected to contain the key: " + key);
         assertSame(map.get(key), value, "The value associated with the key: " + key + " is expected to be the same one that was added.");
     }
-
-    private <O, K, T> void checkMapImmutable(O container, Function<O, Map<K,T>> mapGetter, K key, T otherValue) {
-        Map<K,T> map = mapGetter.apply(container);
-        assertNotNull(map, "The map must not be null.");
-        assertFalse(map.containsKey(key), "The map is expected to not contain the key: " + key);
-        int originalSize = map.size();
-        try {
-            map.put(key, otherValue);
-        }
-        catch (Exception e) {
-            //It is allowed to throw an exception
-        }
-        Map<K,T> map2 = mapGetter.apply(container);
-        assertNotNull(map2, "The map must not be null.");
-        assertFalse(map2.containsKey(key), "The map is expected to not contain the key: " + key);
-        assertEquals(map2.size(), originalSize, "The map is expected to have a size of " + originalSize);
-    }
     
     private <T> void checkListEntry(List<T> list, T value) {
         assertNotNull(list, "The list must not be null.");
diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java
index 170c3de..4e3055c 100644
--- a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java
+++ b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/OASFactoryErrorTest.java
@@ -42,8 +42,6 @@ public class OASFactoryErrorTest extends Arquillian {
             return null;
         }
         @Override
-        public void removeExtension(String name) {}
-        @Override
         public void setExtensions(Map<String, Object> extensions) {}
         @Override
         public String getName() {