Repository: CycloneDX/cyclonedx-core-java
Pull request #383 (2024-03-21 14:16:38)

1.6 improve version filter
This improves the version filters for the library, it's getting more complex to update every single item in the code when a new element is added in the spec, with this change we only need to add the filter to the new object and the version it was introduced.

NOTE: Tests failing are not related to the changes, this is due to the new schema changes, they will be fixed in the other PRs


Patch:
diff --git a/src/main/java/org/cyclonedx/BomGeneratorFactory.java b/src/main/java/org/cyclonedx/BomGeneratorFactory.java
index c0776a2ca..c4bfbf35c 100644
--- a/src/main/java/org/cyclonedx/BomGeneratorFactory.java
+++ b/src/main/java/org/cyclonedx/BomGeneratorFactory.java
@@ -18,6 +18,7 @@
  */
 package org.cyclonedx;
 
+import org.cyclonedx.Version;
 import org.cyclonedx.generators.json.BomJsonGenerator12;
 import org.cyclonedx.generators.json.BomJsonGenerator13;
 import org.cyclonedx.generators.json.BomJsonGenerator14;
@@ -40,11 +41,11 @@ public class BomGeneratorFactory {
     }
 
     @Deprecated
-    public static BomXmlGenerator create(CycloneDxSchema.Version version, Bom bom) {
+    public static BomXmlGenerator create(Version version, Bom bom) {
         return createXml(version, bom);
     }
 
-    public static BomXmlGenerator createXml(CycloneDxSchema.Version version, Bom bom) {
+    public static BomXmlGenerator createXml(Version version, Bom bom) {
         switch (version) {
             case VERSION_10:
                 return new BomXmlGenerator10(bom);
@@ -63,7 +64,7 @@ public class BomGeneratorFactory {
         }
     }
 
-    public static BomJsonGenerator createJson(final CycloneDxSchema.Version version,  Bom bom) {
+    public static BomJsonGenerator createJson(final Version version, Bom bom) {
         switch (version) {
             case VERSION_12:
                 return new BomJsonGenerator12(bom);
diff --git a/src/main/java/org/cyclonedx/CycloneDxSchema.java b/src/main/java/org/cyclonedx/CycloneDxSchema.java
index 47a38b99a..66b1eb033 100644
--- a/src/main/java/org/cyclonedx/CycloneDxSchema.java
+++ b/src/main/java/org/cyclonedx/CycloneDxSchema.java
@@ -71,41 +71,6 @@ public abstract class CycloneDxSchema
 
   public static final List<Version> ALL_VERSIONS = Arrays.asList(Version.values());
 
-  public enum Version
-  {
-    VERSION_10(CycloneDxSchema.NS_BOM_10, "1.0", 1.0),
-    VERSION_11(CycloneDxSchema.NS_BOM_11, "1.1", 1.1),
-    VERSION_12(CycloneDxSchema.NS_BOM_12, "1.2", 1.2),
-    VERSION_13(CycloneDxSchema.NS_BOM_13, "1.3", 1.3),
-    VERSION_14(CycloneDxSchema.NS_BOM_14, "1.4", 1.4),
-    VERSION_15(CycloneDxSchema.NS_BOM_15, "1.5", 1.5),
-    VERSION_16(CycloneDxSchema.NS_BOM_16, "1.6", 1.6);
-
-    private final String namespace;
-
-    private final String versionString;
-
-    private final double version;
-
-    public String getNamespace() {
-      return this.namespace;
-    }
-
-    public String getVersionString() {
-      return versionString;
-    }
-
-    public double getVersion() {
-      return version;
-    }
-
-    Version(String namespace, String versionString, double version) {
-      this.namespace = namespace;
-      this.versionString = versionString;
-      this.version = version;
-    }
-  }
-
   /**
    * Returns the CycloneDX JsonSchema for the specified schema version.
    *
@@ -115,7 +80,7 @@ public abstract class CycloneDxSchema
    * @throws IOException when errors are encountered
    * @since 6.0.0
    */
-  public JsonSchema getJsonSchema(CycloneDxSchema.Version schemaVersion, final ObjectMapper mapper)
+  public JsonSchema getJsonSchema(Version schemaVersion, final ObjectMapper mapper)
       throws IOException
   {
     final InputStream spdxInstream = getJsonSchemaAsStream(schemaVersion);
@@ -139,14 +104,14 @@ public abstract class CycloneDxSchema
     return factory.getSchema(schemaNode, config);
   }
 
-  private InputStream getJsonSchemaAsStream(final CycloneDxSchema.Version schemaVersion) {
-    if (CycloneDxSchema.Version.VERSION_12 == schemaVersion) {
+  private InputStream getJsonSchemaAsStream(final Version schemaVersion) {
+    if (Version.VERSION_12 == schemaVersion) {
       return this.getClass().getClassLoader().getResourceAsStream("bom-1.2-strict.schema.json");
     }
-    else if (CycloneDxSchema.Version.VERSION_13 == schemaVersion) {
+    else if (Version.VERSION_13 == schemaVersion) {
       return this.getClass().getClassLoader().getResourceAsStream("bom-1.3-strict.schema.json");
     }
-    else if (CycloneDxSchema.Version.VERSION_14 == schemaVersion) {
+    else if (Version.VERSION_14 == schemaVersion) {
       return this.getClass().getClassLoader().getResourceAsStream("bom-1.4.schema.json");
     }
     else if(Version.VERSION_15 == schemaVersion){
@@ -165,23 +130,23 @@ public abstract class CycloneDxSchema
    * @throws SAXException a SAXException
    * @since 2.0.0
    */
-  public Schema getXmlSchema(CycloneDxSchema.Version schemaVersion) throws SAXException {
-    if (CycloneDxSchema.Version.VERSION_10 == schemaVersion) {
+  public Schema getXmlSchema(Version schemaVersion) throws SAXException {
+    if (Version.VERSION_10 == schemaVersion) {
       return getXmlSchema10();
     }
-    else if (CycloneDxSchema.Version.VERSION_11 == schemaVersion) {
+    else if (Version.VERSION_11 == schemaVersion) {
       return getXmlSchema11();
     }
-    else if (CycloneDxSchema.Version.VERSION_12 == schemaVersion) {
+    else if (Version.VERSION_12 == schemaVersion) {
       return getXmlSchema12();
     }
-    else if (CycloneDxSchema.Version.VERSION_13 == schemaVersion) {
+    else if (Version.VERSION_13 == schemaVersion) {
       return getXmlSchema13();
     }
-    else if (CycloneDxSchema.Version.VERSION_14 == schemaVersion) {
+    else if (Version.VERSION_14 == schemaVersion) {
       return getXmlSchema14();
     }
-    else if (CycloneDxSchema.Version.VERSION_15 == schemaVersion) {
+    else if (Version.VERSION_15 == schemaVersion) {
       return getXmlSchema15();
     }
     else {
diff --git a/src/main/java/org/cyclonedx/Version.java b/src/main/java/org/cyclonedx/Version.java
new file mode 100644
index 000000000..973f91562
--- /dev/null
+++ b/src/main/java/org/cyclonedx/Version.java
@@ -0,0 +1,36 @@
+package org.cyclonedx;
+
+public enum Version
+{
+  VERSION_10(CycloneDxSchema.NS_BOM_10, "1.0", 1.0),
+  VERSION_11(CycloneDxSchema.NS_BOM_11, "1.1", 1.1),
+  VERSION_12(CycloneDxSchema.NS_BOM_12, "1.2", 1.2),
+  VERSION_13(CycloneDxSchema.NS_BOM_13, "1.3", 1.3),
+  VERSION_14(CycloneDxSchema.NS_BOM_14, "1.4", 1.4),
+  VERSION_15(CycloneDxSchema.NS_BOM_15, "1.5", 1.5),
+  VERSION_16(CycloneDxSchema.NS_BOM_16, "1.6", 1.6);
+
+  private final String namespace;
+
+  private final String versionString;
+
+  private final double version;
+
+  public String getNamespace() {
+    return this.namespace;
+  }
+
+  public String getVersionString() {
+    return versionString;
+  }
+
+  public double getVersion() {
+    return version;
+  }
+
+  Version(String namespace, String versionString, double version) {
+    this.namespace = namespace;
+    this.versionString = versionString;
+    this.version = version;
+  }
+}
\ No newline at end of file
diff --git a/src/main/java/org/cyclonedx/generators/json/AbstractBomJsonGenerator.java b/src/main/java/org/cyclonedx/generators/json/AbstractBomJsonGenerator.java
index 9ddad9446..1aee96669 100644
--- a/src/main/java/org/cyclonedx/generators/json/AbstractBomJsonGenerator.java
+++ b/src/main/java/org/cyclonedx/generators/json/AbstractBomJsonGenerator.java
@@ -31,7 +31,7 @@ import org.cyclonedx.util.serializer.MetadataSerializer;
 import org.cyclonedx.util.serializer.OutputTypeSerializer;
 import org.cyclonedx.util.serializer.TrimStringSerializer;
 import org.cyclonedx.util.serializer.LifecycleSerializer;
-import org.cyclonedx.util.VersionJsonAnnotationIntrospector;
+import org.cyclonedx.util.introspector.VersionJsonAnnotationIntrospector;
 import org.cyclonedx.util.serializer.DependencySerializer;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.util.DefaultIndenter;
@@ -63,9 +63,7 @@ public abstract class AbstractBomJsonGenerator extends CycloneDxSchema implement
     }
 	
     private void setupObjectMapper(final ObjectMapper mapper) {
-        mapper.setAnnotationIntrospector(
-                new VersionJsonAnnotationIntrospector(
-                        String.valueOf(this.getSchemaVersion().getVersion())));
+        mapper.setAnnotationIntrospector(new VersionJsonAnnotationIntrospector(this.getSchemaVersion()));
 
         SimpleModule licenseModule = new SimpleModule();
         SimpleModule depModule = new SimpleModule();
@@ -97,6 +95,10 @@ public abstract class AbstractBomJsonGenerator extends CycloneDxSchema implement
         depModule.addSerializer(new DependencySerializer(false, null));
         mapper.registerModule(depModule);
 
+        /*SimpleModule externalReferenceModule = new SimpleModule();
+        externalReferenceModule.addSerializer(new ExternalReferenceSerializer());
+        mapper.registerModule(externalReferenceModule);*/
+
         componentWrapperModule.addSerializer(new ComponentWrapperSerializer(mapper));
 
         mapper.registerModule(componentWrapperModule);
diff --git a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator.java b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator.java
index aee9992dd..01d7c02a0 100644
--- a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator.java
+++ b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator.java
@@ -19,11 +19,10 @@
 package org.cyclonedx.generators.json;
 
 import com.fasterxml.jackson.databind.JsonNode;
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 
 public interface BomJsonGenerator {
-
-    CycloneDxSchema.Version getSchemaVersion();
+  Version getSchemaVersion();
 
     JsonNode toJsonNode();
 
diff --git a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator12.java b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator12.java
index bf4b68019..c486e9f35 100644
--- a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator12.java
+++ b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator12.java
@@ -20,7 +20,7 @@ package org.cyclonedx.generators.json;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -53,7 +53,7 @@ public class BomJsonGenerator12 extends AbstractBomJsonGenerator implements BomJ
      * @return a CycloneDxSchemaVersion enum
      */
     public Version getSchemaVersion() {
-        return CycloneDxSchema.Version.VERSION_12;
+        return Version.VERSION_12;
     }
 
     /**
diff --git a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator13.java b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator13.java
index ff1bf6bb9..fea1ac8b0 100644
--- a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator13.java
+++ b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator13.java
@@ -20,7 +20,7 @@ package org.cyclonedx.generators.json;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -53,7 +53,7 @@ public class BomJsonGenerator13 extends AbstractBomJsonGenerator implements BomJ
      * @return a CycloneDxSchemaVersion enum
      */
     public Version getSchemaVersion() {
-        return CycloneDxSchema.Version.VERSION_13;
+        return Version.VERSION_13;
     }
 
     /**
diff --git a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator14.java b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator14.java
index 290b7721c..27ff60806 100644
--- a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator14.java
+++ b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator14.java
@@ -20,6 +20,7 @@ package org.cyclonedx.generators.json;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
diff --git a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator15.java b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator15.java
index 3a0138b13..14621f4a0 100644
--- a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator15.java
+++ b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator15.java
@@ -20,6 +20,7 @@ package org.cyclonedx.generators.json;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
diff --git a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator16.java b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator16.java
index 6d77e1239..05b4bbe46 100644
--- a/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator16.java
+++ b/src/main/java/org/cyclonedx/generators/json/BomJsonGenerator16.java
@@ -20,6 +20,7 @@ package org.cyclonedx.generators.json;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
diff --git a/src/main/java/org/cyclonedx/generators/xml/AbstractBomXmlGenerator.java b/src/main/java/org/cyclonedx/generators/xml/AbstractBomXmlGenerator.java
index f7815a622..9720ab82a 100644
--- a/src/main/java/org/cyclonedx/generators/xml/AbstractBomXmlGenerator.java
+++ b/src/main/java/org/cyclonedx/generators/xml/AbstractBomXmlGenerator.java
@@ -24,13 +24,14 @@ import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+
 import org.cyclonedx.CycloneDxSchema;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.util.serializer.DependencySerializer;
 import org.cyclonedx.util.serializer.InputTypeSerializer;
 import org.cyclonedx.util.serializer.LifecycleSerializer;
-import org.cyclonedx.util.VersionXmlAnnotationIntrospector;
+import org.cyclonedx.util.introspector.VersionXmlAnnotationIntrospector;
 import org.cyclonedx.util.serializer.MetadataSerializer;
 import org.cyclonedx.util.serializer.OutputTypeSerializer;
 import org.w3c.dom.Document;
@@ -42,119 +43,119 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import com.fasterxml.jackson.dataformat.xml.util.DefaultXmlPrettyPrinter;
 
-public abstract class AbstractBomXmlGenerator extends CycloneDxSchema implements BomXmlGenerator {
+public abstract class AbstractBomXmlGenerator
+    extends CycloneDxSchema
+    implements BomXmlGenerator
+{
+  private final ObjectMapper mapper;
 
-    private final ObjectMapper mapper;
+  private final DefaultXmlPrettyPrinter prettyPrinter;
 
-    private final DefaultXmlPrettyPrinter prettyPrinter;
+  public AbstractBomXmlGenerator() {
+    mapper = new XmlMapper();
+    prettyPrinter = new DefaultXmlPrettyPrinter();
+    setupObjectMapper(mapper);
+  }
 
-	public AbstractBomXmlGenerator() {
-        mapper = new XmlMapper();
-        prettyPrinter = new DefaultXmlPrettyPrinter();
-        setupObjectMapper(mapper);
-    }
+  public ObjectMapper getMapper() {
+    return mapper;
+  }
 
-    public ObjectMapper getMapper() {
-        return mapper;
-    }
-	
-    Document doc;
-
-    protected static final String PROLOG = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
-
-    private void setupObjectMapper(final ObjectMapper mapper) {
-        mapper.setAnnotationIntrospector(
-            new VersionXmlAnnotationIntrospector(String.valueOf(this.getSchemaVersion().getVersion())));
-
-        if (this.getSchemaVersion().getVersion() == 1.0) {
-            // NO-OP
-        }
-        else {
-            boolean useNamespace = this.getSchemaVersion().getVersion() == 1.1;
-            registerDependencyModule(mapper, useNamespace);
-        }
-
-        SimpleModule lifecycleModule = new SimpleModule();
-        lifecycleModule.addSerializer(new LifecycleSerializer(true));
-        mapper.registerModule(lifecycleModule);
-
-        SimpleModule metadataModule = new SimpleModule();
-        metadataModule.addSerializer(new MetadataSerializer(true, getSchemaVersion()));
-        mapper.registerModule(metadataModule);
-
-        SimpleModule inputTypeModule = new SimpleModule();
-        inputTypeModule.addSerializer(new InputTypeSerializer(true));
-        mapper.registerModule(inputTypeModule);
-
-        SimpleModule outputTypeModule = new SimpleModule();
-        outputTypeModule.addSerializer(new OutputTypeSerializer(false));
-        mapper.registerModule(outputTypeModule);
-    }
+  Document doc;
 
-    private void registerDependencyModule(final ObjectMapper mapper, final boolean useNamespace) {
-        SimpleModule depModule = new SimpleModule();
+  protected static final String PROLOG = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
 
-        depModule.addSerializer(new DependencySerializer(useNamespace, null));
-        mapper.registerModule(depModule);
-    }
+  private void setupObjectMapper(final ObjectMapper mapper) {
+    mapper.setAnnotationIntrospector(new VersionXmlAnnotationIntrospector(getSchemaVersion()));
 
-    /**
-     * Constructs a new document builder with security features enabled.
-     *
-     * @return a new document builder
-     * @throws javax.xml.parsers.ParserConfigurationException thrown if there is
-     * a parser configuration exception
-     */
-    public DocumentBuilder buildSecureDocumentBuilder() throws ParserConfigurationException {
-        final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
-        factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
-        factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
-        factory.setNamespaceAware(true);
-        return factory.newDocumentBuilder();
+    if (this.getSchemaVersion().getVersion() != 1.0) {
+        boolean useNamespace = this.getSchemaVersion().getVersion() == 1.1;
+        registerDependencyModule(mapper, useNamespace);
     }
 
-    protected Document generateDocument(final Bom bom)
-        throws ParserConfigurationException
-    {
-        try {
-            final DocumentBuilder docBuilder = buildSecureDocumentBuilder();
-
-            this.doc = docBuilder.parse(new InputSource(new StringReader(toXML(bom, false))));
-
-            this.doc.setXmlStandalone(true);
-
-            return this.doc;
-        } catch (SAXException | ParserConfigurationException | IOException | GeneratorException ex) {
-            throw new ParserConfigurationException(ex.toString());
-        }
+    SimpleModule lifecycleModule = new SimpleModule();
+    lifecycleModule.addSerializer(new LifecycleSerializer(true));
+    mapper.registerModule(lifecycleModule);
+
+    SimpleModule metadataModule = new SimpleModule();
+    metadataModule.addSerializer(new MetadataSerializer(true, getSchemaVersion()));
+    mapper.registerModule(metadataModule);
+
+    SimpleModule inputTypeModule = new SimpleModule();
+    inputTypeModule.addSerializer(new InputTypeSerializer(true));
+    mapper.registerModule(inputTypeModule);
+
+    SimpleModule outputTypeModule = new SimpleModule();
+    outputTypeModule.addSerializer(new OutputTypeSerializer(false));
+    mapper.registerModule(outputTypeModule);
+
+    /*SimpleModule externalReferenceModule = new SimpleModule();
+    externalReferenceModule.addSerializer(new ExternalReferenceSerializer());
+    mapper.registerModule(externalReferenceModule);*/
+  }
+
+  private void registerDependencyModule(final ObjectMapper mapper, final boolean useNamespace) {
+    SimpleModule depModule = new SimpleModule();
+    depModule.addSerializer(new DependencySerializer(useNamespace, null));
+    mapper.registerModule(depModule);
+  }
+
+  /**
+   * Constructs a new document builder with security features enabled.
+   *
+   * @return a new document builder
+   * @throws javax.xml.parsers.ParserConfigurationException thrown if there is a parser configuration exception
+   */
+  public DocumentBuilder buildSecureDocumentBuilder() throws ParserConfigurationException {
+    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+    factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+    factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
+    factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+    factory.setNamespaceAware(true);
+    return factory.newDocumentBuilder();
+  }
+
+  protected Document generateDocument(final Bom bom)
+      throws ParserConfigurationException
+  {
+    try {
+      final DocumentBuilder docBuilder = buildSecureDocumentBuilder();
+      this.doc = docBuilder.parse(new InputSource(new StringReader(toXML(bom, false))));
+      this.doc.setXmlStandalone(true);
+      return this.doc;
     }
-
-    String toXML(final Bom bom, final boolean prettyPrint) throws GeneratorException {
-        try {
-            if (prettyPrint) {
-                return PROLOG + System.lineSeparator() + mapper.writer(prettyPrinter).writeValueAsString(bom);
-            }
-            return PROLOG + mapper.writeValueAsString(bom);
-        } catch (JsonProcessingException ex) {
-            throw new GeneratorException(ex);
-        }
+    catch (SAXException | ParserConfigurationException | IOException | GeneratorException ex) {
+      throw new ParserConfigurationException(ex.toString());
     }
-
-    /**
-     * Creates a text representation of a CycloneDX BoM Document. This method
-     * calls {@link #toXmlString()} and will return an empty string if {@link #toXmlString()}
-     * throws an exception. It's preferred to call {@link #toXmlString()} directly
-     * so that exceptions can be caught.
-     * @return a String of the BoM
-     * @since 1.1.0
-     */
-    @Override
-    public String toString() {
-        try {
-            return toXmlString();
-        } catch (Exception e) {
-            return "";
-        }
+  }
+
+  String toXML(final Bom bom, final boolean prettyPrint) throws GeneratorException {
+    try {
+      if (prettyPrint) {
+        return PROLOG + System.lineSeparator() + mapper.writer(prettyPrinter).writeValueAsString(bom);
+      }
+      return PROLOG + mapper.writeValueAsString(bom);
+    }
+    catch (JsonProcessingException ex) {
+      throw new GeneratorException(ex);
+    }
+  }
+
+  /**
+   * Creates a text representation of a CycloneDX BoM Document. This method calls {@link #toXmlString()} and will return
+   * an empty string if {@link #toXmlString()} throws an exception. It's preferred to call {@link #toXmlString()}
+   * directly so that exceptions can be caught.
+   *
+   * @return a String of the BoM
+   * @since 1.1.0
+   */
+  @Override
+  public String toString() {
+    try {
+      return toXmlString();
+    }
+    catch (Exception e) {
+      return "";
     }
+  }
 }
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator.java
index 39058396a..4500d9eb7 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator.java
@@ -18,19 +18,17 @@
  */
 package org.cyclonedx.generators.xml;
 
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.w3c.dom.Document;
 import javax.xml.parsers.ParserConfigurationException;
 
 public interface BomXmlGenerator {
-
-    CycloneDxSchema.Version getSchemaVersion();
+    Version getSchemaVersion();
 
     Document generate() throws ParserConfigurationException;
 
     String toXmlString() throws GeneratorException;
 
     String toString();
-
 }
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator10.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator10.java
index f0e0ab386..ff7e32ca2 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator10.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator10.java
@@ -19,6 +19,7 @@
 package org.cyclonedx.generators.xml;
 
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -50,7 +51,7 @@ public class BomXmlGenerator10 extends AbstractBomXmlGenerator implements BomXml
      * @return a CycloneDxSchemaVersion enum
      */
     public Version getSchemaVersion() {
-        return CycloneDxSchema.Version.VERSION_10;
+        return Version.VERSION_10;
     }
 
     /**
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator11.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator11.java
index 1a1c38658..60cd35f4b 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator11.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator11.java
@@ -19,6 +19,7 @@
 package org.cyclonedx.generators.xml;
 
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -50,7 +51,7 @@ public class BomXmlGenerator11 extends AbstractBomXmlGenerator implements BomXml
      * @return a CycloneDxSchemaVersion enum
      */
     public Version getSchemaVersion() {
-        return CycloneDxSchema.Version.VERSION_11;
+        return Version.VERSION_11;
     }
 
     /**
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator12.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator12.java
index ce01e35b6..2baab58af 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator12.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator12.java
@@ -19,6 +19,7 @@
 package org.cyclonedx.generators.xml;
 
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -50,7 +51,7 @@ public class BomXmlGenerator12 extends AbstractBomXmlGenerator implements BomXml
      * @return a CycloneDxSchemaVersion enum
      */
     public Version getSchemaVersion() {
-        return CycloneDxSchema.Version.VERSION_12;
+        return Version.VERSION_12;
     }
 
     /**
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator13.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator13.java
index f27effdf8..56f4f1a63 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator13.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator13.java
@@ -19,6 +19,7 @@
 package org.cyclonedx.generators.xml;
 
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -50,7 +51,7 @@ public class BomXmlGenerator13 extends AbstractBomXmlGenerator implements BomXml
      * @return a CycloneDxSchemaVersion enum
      */
     public Version getSchemaVersion() {
-        return CycloneDxSchema.Version.VERSION_13;
+        return Version.VERSION_13;
     }
 
     /**
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator14.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator14.java
index 877d7c6be..7c70592b1 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator14.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator14.java
@@ -19,6 +19,7 @@
 package org.cyclonedx.generators.xml;
 
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator15.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator15.java
index db1e28e94..21726b2a7 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator15.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator15.java
@@ -21,6 +21,7 @@ package org.cyclonedx.generators.xml;
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -45,7 +46,6 @@ public class BomXmlGenerator15
    */
   public BomXmlGenerator15(final Bom bom) {
     bom.setXmlns(CycloneDxSchema.NS_BOM_15);
-
     this.bom = bom;
   }
 
diff --git a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator16.java b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator16.java
index 066eb3854..5fce324c9 100644
--- a/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator16.java
+++ b/src/main/java/org/cyclonedx/generators/xml/BomXmlGenerator16.java
@@ -21,6 +21,7 @@ package org.cyclonedx.generators.xml;
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.GeneratorException;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
diff --git a/src/main/java/org/cyclonedx/model/Bom.java b/src/main/java/org/cyclonedx/model/Bom.java
index 9fba6c692..6c1607fd2 100644
--- a/src/main/java/org/cyclonedx/model/Bom.java
+++ b/src/main/java/org/cyclonedx/model/Bom.java
@@ -29,6 +29,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.formulation.Formula;
 import org.cyclonedx.model.vulnerability.Vulnerability;
 import org.cyclonedx.util.deserializer.DependencyDeserializer;
@@ -62,35 +63,35 @@ public class Bom extends ExtensibleElement {
     @JacksonXmlProperty(isAttribute = true)
     private String xmlns;
 
-    @VersionFilter(versions = { "1.0", "1.1" })
+    @VersionFilter(value = Version.VERSION_12)
     private Metadata metadata;
 
     private List<Component> components;
 
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(value = Version.VERSION_12)
     private List<Service> services;
 
-    @VersionFilter(versions = {"1.0"})
+    @VersionFilter(value = Version.VERSION_11)
     private DependencyList dependencies;
 
-    @VersionFilter(versions = {"1.0"})
+    @VersionFilter(value = Version.VERSION_11)
     @JsonDeserialize(using = ExternalReferencesDeserializer.class)
     private List<ExternalReference> externalReferences;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(value = Version.VERSION_13)
     private List<Composition> compositions;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(value = Version.VERSION_15)
     private List<Formula> formulation;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+    @VersionFilter(value = Version.VERSION_14)
     @JsonDeserialize(using = VulnerabilityDeserializer.class)
     private List<Vulnerability> vulnerabilities;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(value =  Version.VERSION_15)
     private List<Annotation> annotations;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(value = Version.VERSION_13)
     private List<Property> properties;
 
     @JacksonXmlProperty(isAttribute = true)
@@ -106,7 +107,7 @@ public class Bom extends ExtensibleElement {
     private String bomFormat;
 
     @JsonOnly
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+    @VersionFilter(value = Version.VERSION_14)
     private Signature signature;
 
     public Metadata getMetadata() {
diff --git a/src/main/java/org/cyclonedx/model/Component.java b/src/main/java/org/cyclonedx/model/Component.java
index 7ae2df3ae..456a29b85 100644
--- a/src/main/java/org/cyclonedx/model/Component.java
+++ b/src/main/java/org/cyclonedx/model/Component.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
+import org.cyclonedx.Version;
 import org.cyclonedx.model.component.ModelCard;
 import org.cyclonedx.model.component.modelCard.ComponentData;
 import org.cyclonedx.util.deserializer.ExternalReferencesDeserializer;
@@ -131,11 +132,11 @@ public class Component extends ExtensibleElement {
     @JacksonXmlProperty(isAttribute = true, localName = "mime-type")
     @JsonProperty("mime-type")
     private String mimeType;
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private OrganizationalEntity supplier;
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private String author;
-    @VersionFilter(versions = {"1.0"})
+    @VersionFilter(Version.VERSION_11)
     private String publisher;
     private String group;
     private String name;
@@ -147,33 +148,33 @@ public class Component extends ExtensibleElement {
     private String copyright;
     private String cpe;
     private String purl;
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private Swid swid;
     private Boolean modified;
-    @VersionFilter(versions = {"1.0"})
+    @VersionFilter(Version.VERSION_11)
     private Pedigree pedigree;
-    @VersionFilter(versions = {"1.0"})
+    @VersionFilter(Version.VERSION_11)
     private List<ExternalReference> externalReferences;
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(Version.VERSION_13)
     private List<Property> properties;
     private List<Component> components;
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(Version.VERSION_13)
     private Evidence evidence;
     @JacksonXmlProperty(isAttribute = true)
     private Type type;
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+    @VersionFilter(Version.VERSION_14)
     private ReleaseNotes releaseNotes;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     @JsonProperty("modelCard")
     private ModelCard modelCard;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     @JsonProperty("data")
     private ComponentData data;
 
     @JsonOnly
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+    @VersionFilter(Version.VERSION_14)
     private Signature signature;
 
     public String getBomRef() {
diff --git a/src/main/java/org/cyclonedx/model/Composition.java b/src/main/java/org/cyclonedx/model/Composition.java
index 4fa8156ac..c2cde80e5 100644
--- a/src/main/java/org/cyclonedx/model/Composition.java
+++ b/src/main/java/org/cyclonedx/model/Composition.java
@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -69,14 +70,14 @@ public class Composition {
 
     @JacksonXmlProperty(isAttribute = true, localName = "bom-ref")
     @JsonProperty("bom-ref")
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private String bomRef;
 
     private Aggregate aggregate;
     private List<BomReference> assemblies;
     private List<BomReference> dependencies;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private List<BomReference> vulnerabilities;
 
     public String getBomRef() {
diff --git a/src/main/java/org/cyclonedx/model/Evidence.java b/src/main/java/org/cyclonedx/model/Evidence.java
index 3d1fc8d01..67f011a1e 100644
--- a/src/main/java/org/cyclonedx/model/Evidence.java
+++ b/src/main/java/org/cyclonedx/model/Evidence.java
@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.component.evidence.Callstack;
 import org.cyclonedx.model.component.evidence.Identity;
 import org.cyclonedx.model.component.evidence.Occurrence;
@@ -44,13 +45,13 @@ public class Evidence
 
     private List<Copyright> copyright;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private Identity identity;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private List<Occurrence> occurrences;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private Callstack callstack;
 
     @JacksonXmlProperty(localName = "licenses")
diff --git a/src/main/java/org/cyclonedx/model/ExternalReference.java b/src/main/java/org/cyclonedx/model/ExternalReference.java
index 684e0688d..9f908192f 100644
--- a/src/main/java/org/cyclonedx/model/ExternalReference.java
+++ b/src/main/java/org/cyclonedx/model/ExternalReference.java
@@ -28,6 +28,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 import org.cyclonedx.util.serializer.ExternalReferenceSerializer;
 
 @SuppressWarnings("unused")
@@ -140,7 +141,7 @@ public class ExternalReference {
     private Type type;
     private String comment;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(Version.VERSION_13)
     private List<Hash> hashes;
 
     public String getUrl() {
diff --git a/src/main/java/org/cyclonedx/model/License.java b/src/main/java/org/cyclonedx/model/License.java
index 98c2d8064..af2c6b799 100644
--- a/src/main/java/org/cyclonedx/model/License.java
+++ b/src/main/java/org/cyclonedx/model/License.java
@@ -28,6 +28,7 @@ import com.fasterxml.jackson.annotation.JsonRootName;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 import org.cyclonedx.util.deserializer.PropertiesDeserializer;
 
 @SuppressWarnings("unused")
@@ -37,7 +38,7 @@ import org.cyclonedx.util.deserializer.PropertiesDeserializer;
 @JsonRootName("license")
 public class License extends ExtensibleElement {
 
-    @VersionFilter(versions = {"1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     @JacksonXmlProperty(isAttribute = true, localName = "bom-ref")
     @JsonProperty("bom-ref")
     private String bomRef;
@@ -46,7 +47,7 @@ public class License extends ExtensibleElement {
     private String id;
     private String name;
 
-    @VersionFilter(versions = {"1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private Licensing licensing;
 
     @JacksonXmlProperty(localName = "text")
@@ -54,7 +55,7 @@ public class License extends ExtensibleElement {
     private AttachmentText attachmentText;
     private String url;
 
-    @VersionFilter(versions = {"1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private List<Property> properties;
 
     public String getBomRef() {
diff --git a/src/main/java/org/cyclonedx/model/Metadata.java b/src/main/java/org/cyclonedx/model/Metadata.java
index b2fd8956f..2ddc20849 100644
--- a/src/main/java/org/cyclonedx/model/Metadata.java
+++ b/src/main/java/org/cyclonedx/model/Metadata.java
@@ -27,6 +27,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 import org.cyclonedx.util.deserializer.LifecycleDeserializer;
 import org.cyclonedx.util.deserializer.MetadataDeserializer;
 import org.cyclonedx.util.serializer.CustomDateSerializer;
@@ -47,41 +48,41 @@ public class Metadata
 {
 
     @JsonSerialize(using = CustomDateSerializer.class)
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private Date timestamp = new Date();
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     @JsonProperty("lifecycles")
     @JsonDeserialize(using = LifecycleDeserializer.class)
     @JacksonXmlElementWrapper(localName = "lifecycles")
     @JacksonXmlProperty(localName = "lifecycle")
     private Lifecycles lifecycles;
 
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     @Deprecated
     private List<Tool> tools;
 
     @JacksonXmlElementWrapper(localName = "tools")
     @JacksonXmlProperty(localName = "tool")
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private ToolInformation toolInformation;
 
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private List<OrganizationalContact> authors;
 
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private Component component;
 
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private OrganizationalEntity manufacture;
 
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private OrganizationalEntity supplier;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(Version.VERSION_13)
     private LicenseChoice license;
 
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(Version.VERSION_13)
     private List<Property> properties;
 
     public Date getTimestamp() {
diff --git a/src/main/java/org/cyclonedx/model/OrganizationalContact.java b/src/main/java/org/cyclonedx/model/OrganizationalContact.java
index 631b9f409..adecd83f8 100644
--- a/src/main/java/org/cyclonedx/model/OrganizationalContact.java
+++ b/src/main/java/org/cyclonedx/model/OrganizationalContact.java
@@ -24,6 +24,7 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 
 import java.util.Objects;
 
@@ -34,7 +35,7 @@ public class OrganizationalContact {
 
     @JacksonXmlProperty(isAttribute = true, localName = "bom-ref")
     @JsonProperty("bom-ref")
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private String bomRef;
     private String name;
     private String email;
diff --git a/src/main/java/org/cyclonedx/model/OrganizationalEntity.java b/src/main/java/org/cyclonedx/model/OrganizationalEntity.java
index dbcb5358c..a5e83f773 100644
--- a/src/main/java/org/cyclonedx/model/OrganizationalEntity.java
+++ b/src/main/java/org/cyclonedx/model/OrganizationalEntity.java
@@ -30,6 +30,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
+import org.cyclonedx.Version;
 import org.cyclonedx.util.deserializer.OrganizationalEntityDeserializer;
 
 @JsonIgnoreProperties(ignoreUnknown = true)
@@ -40,7 +41,7 @@ public class OrganizationalEntity {
 
     @JacksonXmlProperty(isAttribute = true, localName = "bom-ref")
     @JsonProperty("bom-ref")
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(Version.VERSION_15)
     private String bomRef;
 
     private String name;
diff --git a/src/main/java/org/cyclonedx/model/Pedigree.java b/src/main/java/org/cyclonedx/model/Pedigree.java
index 58118bf21..6d1af5124 100644
--- a/src/main/java/org/cyclonedx/model/Pedigree.java
+++ b/src/main/java/org/cyclonedx/model/Pedigree.java
@@ -26,6 +26,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 import org.cyclonedx.util.deserializer.ComponentWrapperDeserializer;
 
 @SuppressWarnings("unused")
@@ -45,7 +46,7 @@ public class Pedigree extends ExtensibleElement {
 
     private List<Commit> commits;
 
-    @VersionFilter(versions = {"1.0", "1.1"})
+    @VersionFilter(Version.VERSION_12)
     private List<Patch> patches;
 
     private String notes;
diff --git a/src/main/java/org/cyclonedx/model/ReleaseNotes.java b/src/main/java/org/cyclonedx/model/ReleaseNotes.java
index 1942cdce6..c9a777976 100644
--- a/src/main/java/org/cyclonedx/model/ReleaseNotes.java
+++ b/src/main/java/org/cyclonedx/model/ReleaseNotes.java
@@ -29,6 +29,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 import org.cyclonedx.util.deserializer.NotesDeserializer;
 import org.cyclonedx.util.deserializer.PropertiesDeserializer;
 import org.cyclonedx.util.deserializer.ResolvesDeserializer;
@@ -63,7 +64,7 @@ public class ReleaseNotes
   private String socialImage;
   private String description;
   @JsonSerialize(using = CustomDateSerializer.class)
-  @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+  @VersionFilter(Version.VERSION_14)
   private Date timestamp;
   private List<String> aliases;
   private List<String> tags;
diff --git a/src/main/java/org/cyclonedx/model/Service.java b/src/main/java/org/cyclonedx/model/Service.java
index 90d0d58b2..14b087c72 100644
--- a/src/main/java/org/cyclonedx/model/Service.java
+++ b/src/main/java/org/cyclonedx/model/Service.java
@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import org.cyclonedx.Version;
 import org.cyclonedx.util.deserializer.ExternalReferencesDeserializer;
 import org.cyclonedx.util.deserializer.StringListDeserializer;
 
@@ -69,12 +70,12 @@ public class Service extends ExtensibleElement {
     private List<ServiceData> data;
     private LicenseChoice license;
     private List<ExternalReference> externalReferences;
-    @VersionFilter(versions = {"1.0", "1.1", "1.2"})
+    @VersionFilter(Version.VERSION_13)
     private List<Property> properties;
     private List<Service> services;
     private ReleaseNotes releaseNotes;
     @JsonOnly
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+    @VersionFilter(Version.VERSION_14)
     private Signature signature;
 
     public String getBomRef() {
diff --git a/src/main/java/org/cyclonedx/model/VersionFilter.java b/src/main/java/org/cyclonedx/model/VersionFilter.java
index 1f6bb5ced..7492388a3 100644
--- a/src/main/java/org/cyclonedx/model/VersionFilter.java
+++ b/src/main/java/org/cyclonedx/model/VersionFilter.java
@@ -23,9 +23,11 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+import org.cyclonedx.Version;
+
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.FIELD)
 public @interface VersionFilter {
-  //Versions that are excluded by the filter
-  String[] versions();
+  //Version where the attribute was introduced
+  Version value();
 }
diff --git a/src/main/java/org/cyclonedx/model/vulnerability/Vulnerability.java b/src/main/java/org/cyclonedx/model/vulnerability/Vulnerability.java
index ac651aeb3..e8d1ef2ac 100644
--- a/src/main/java/org/cyclonedx/model/vulnerability/Vulnerability.java
+++ b/src/main/java/org/cyclonedx/model/vulnerability/Vulnerability.java
@@ -35,6 +35,7 @@ import org.cyclonedx.model.Property;
 import org.cyclonedx.model.Tool;
 import org.cyclonedx.model.VersionFilter;
 import org.cyclonedx.util.serializer.CustomDateSerializer;
+import org.cyclonedx.Version;
 
 /**
  * @since 6.0.0
@@ -79,16 +80,16 @@ public class Vulnerability
   private String recommendation;
   private List<Advisory> advisories;
   @JsonSerialize(using = CustomDateSerializer.class)
-  @VersionFilter(versions = { "1.0", "1.1", "1.2", "1.3"})
+  @VersionFilter(org.cyclonedx.Version.VERSION_14)
   private Date created;
   @JsonSerialize(using = CustomDateSerializer.class)
-  @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+  @VersionFilter(org.cyclonedx.Version.VERSION_14)
   private Date published;
   @JsonSerialize(using = CustomDateSerializer.class)
-  @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3"})
+  @VersionFilter(org.cyclonedx.Version.VERSION_14)
   private Date updated;
   @JsonSerialize(using = CustomDateSerializer.class)
-  @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+  @VersionFilter(org.cyclonedx.Version.VERSION_15)
   private Date rejected;
   private Credits credits;
   @JacksonXmlElementWrapper(localName = "tools")
@@ -596,11 +597,11 @@ public class Vulnerability
     private String detail;
 
     @JsonSerialize(using = CustomDateSerializer.class)
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(org.cyclonedx.Version.VERSION_15)
     private Date firstIssued;
 
     @JsonSerialize(using = CustomDateSerializer.class)
-    @VersionFilter(versions = {"1.0", "1.1", "1.2", "1.3", "1.4"})
+    @VersionFilter(org.cyclonedx.Version.VERSION_15)
     private Date lastUpdated;
 
     public State getState() {
diff --git a/src/main/java/org/cyclonedx/parsers/JsonParser.java b/src/main/java/org/cyclonedx/parsers/JsonParser.java
index a7cc31168..8102f8b17 100644
--- a/src/main/java/org/cyclonedx/parsers/JsonParser.java
+++ b/src/main/java/org/cyclonedx/parsers/JsonParser.java
@@ -24,6 +24,7 @@ import com.networknt.schema.ValidationMessage;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.ParseException;
 import org.cyclonedx.model.Bom;
 
@@ -104,7 +105,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final File file, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final File file, final Version schemaVersion) throws IOException {
         return validate(FileUtils.readFileToString(file, StandardCharsets.UTF_8), schemaVersion);
     }
 
@@ -118,7 +119,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final byte[] bomBytes, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final byte[] bomBytes, final Version schemaVersion) throws IOException {
         return validate(new String(bomBytes), schemaVersion);
     }
 
@@ -132,7 +133,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final Reader reader, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final Reader reader, final Version schemaVersion) throws IOException {
         return validate(IOUtils.toString(reader), schemaVersion);
     }
 
@@ -146,7 +147,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final InputStream inputStream, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final InputStream inputStream, final Version schemaVersion) throws IOException {
         return validate(IOUtils.toString(inputStream, StandardCharsets.UTF_8), schemaVersion);
     }
 
@@ -158,7 +159,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    public List<ParseException> validate(final String bomString, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final String bomString, final Version schemaVersion) throws IOException {
         return validate(mapper.readTree(bomString), schemaVersion);
     }
 
@@ -170,7 +171,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    public List<ParseException> validate(final JsonNode bomJson, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final JsonNode bomJson, final Version schemaVersion) throws IOException {
         final List<ParseException> exceptions = new ArrayList<>();
         Set<ValidationMessage> errors = getJsonSchema(schemaVersion, mapper).validate(mapper.readTree(bomJson.toString()));
         for (ValidationMessage message: errors) {
@@ -189,7 +190,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final File file, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final File file, final Version schemaVersion) throws IOException {
         return validate(file, schemaVersion).isEmpty();
     }
 
@@ -203,7 +204,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final byte[] bomBytes, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final byte[] bomBytes, final Version schemaVersion) throws IOException {
         return validate(bomBytes, schemaVersion).isEmpty();
     }
 
@@ -217,7 +218,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final Reader reader, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final Reader reader, final Version schemaVersion) throws IOException {
         return validate(reader, schemaVersion).isEmpty();
     }
 
@@ -231,7 +232,7 @@ public class JsonParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final InputStream inputStream, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final InputStream inputStream, final Version schemaVersion) throws IOException {
         return validate(inputStream, schemaVersion).isEmpty();
     }
 }
diff --git a/src/main/java/org/cyclonedx/parsers/Parser.java b/src/main/java/org/cyclonedx/parsers/Parser.java
index 7ce11a6ab..9554bb672 100644
--- a/src/main/java/org/cyclonedx/parsers/Parser.java
+++ b/src/main/java/org/cyclonedx/parsers/Parser.java
@@ -18,7 +18,7 @@
  */
 package org.cyclonedx.parsers;
 
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.ParseException;
 import org.cyclonedx.model.Bom;
 import java.io.File;
@@ -82,7 +82,7 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    List<ParseException> validate(File file, CycloneDxSchema.Version schemaVersion) throws IOException;
+    List<ParseException> validate(File file, Version schemaVersion) throws IOException;
 
     /**
      * Validates a CycloneDX BOM.
@@ -101,7 +101,7 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    List<ParseException> validate(byte[] bomBytes, CycloneDxSchema.Version schemaVersion) throws IOException;
+    List<ParseException> validate(byte[] bomBytes, Version schemaVersion) throws IOException;
 
     /**
      * Validates a CycloneDX BOM.
@@ -120,7 +120,7 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    List<ParseException> validate(Reader reader, CycloneDxSchema.Version schemaVersion) throws IOException;
+    List<ParseException> validate(Reader reader, Version schemaVersion) throws IOException;
 
     /**
      * Validates a CycloneDX BOM.
@@ -139,7 +139,7 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    List<ParseException> validate(InputStream inputStream, CycloneDxSchema.Version schemaVersion) throws IOException;
+    List<ParseException> validate(InputStream inputStream, Version schemaVersion) throws IOException;
 
     /**
      * Verifies a CycloneDX BOM conforms to the latest version of the specification.
@@ -158,7 +158,7 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    boolean isValid(File file, CycloneDxSchema.Version schemaVersion) throws IOException;
+    boolean isValid(File file, Version schemaVersion) throws IOException;
 
     /**
      * Verifies a CycloneDX BOM conforms to the latest version of the specification.
@@ -177,7 +177,7 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    boolean isValid(byte[] bomBytes, CycloneDxSchema.Version schemaVersion) throws IOException;
+    boolean isValid(byte[] bomBytes, Version schemaVersion) throws IOException;
 
     /**
      * Verifies a CycloneDX BOM conforms to the latest version of the specification.
@@ -196,7 +196,7 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    boolean isValid(Reader reader, CycloneDxSchema.Version schemaVersion) throws IOException;
+    boolean isValid(Reader reader, Version schemaVersion) throws IOException;
 
     /**
      * Verifies a CycloneDX BOM conforms to the latest version of the specification.
@@ -215,6 +215,6 @@ public interface Parser {
      * @throws IOException when errors are encountered
      * @since 3.0.0
      */
-    boolean isValid(InputStream inputStream, CycloneDxSchema.Version schemaVersion) throws IOException;
+    boolean isValid(InputStream inputStream, Version schemaVersion) throws IOException;
 
 }
diff --git a/src/main/java/org/cyclonedx/parsers/XmlParser.java b/src/main/java/org/cyclonedx/parsers/XmlParser.java
index 79322dd06..a11498407 100644
--- a/src/main/java/org/cyclonedx/parsers/XmlParser.java
+++ b/src/main/java/org/cyclonedx/parsers/XmlParser.java
@@ -21,6 +21,7 @@ package org.cyclonedx.parsers;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.ParseException;
 import org.cyclonedx.model.Bom;
 import org.w3c.dom.Node;
@@ -143,7 +144,7 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final File file, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final File file, final Version schemaVersion) throws IOException {
         final Source source = new StreamSource(file);
         return validate(source, schemaVersion);
     }
@@ -158,7 +159,7 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final byte[] bomBytes, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final byte[] bomBytes, final Version schemaVersion) throws IOException {
         final Source source = new StreamSource(new ByteArrayInputStream(bomBytes));
         return validate(source, schemaVersion);
     }
@@ -173,7 +174,7 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final Reader reader, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final Reader reader, final Version schemaVersion) throws IOException {
         final Source source = new StreamSource(reader);
         return validate(source, schemaVersion);
     }
@@ -188,12 +189,12 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public List<ParseException> validate(final InputStream inputStream, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final InputStream inputStream, final Version schemaVersion) throws IOException {
         final Source source = new StreamSource(inputStream);
         return validate(source, schemaVersion);
     }
 
-    public List<ParseException> validate(final Source source, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public List<ParseException> validate(final Source source, final Version schemaVersion) throws IOException {
         final List<ParseException> exceptions = new LinkedList<>();
         try {
             final Schema schema = getXmlSchema(schemaVersion);
@@ -231,7 +232,7 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final File file, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final File file, final Version schemaVersion) throws IOException {
         return validate(file, schemaVersion).isEmpty();
     }
 
@@ -245,7 +246,7 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final byte[] bomBytes, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final byte[] bomBytes, final Version schemaVersion) throws IOException {
         return validate(bomBytes, schemaVersion).isEmpty();
     }
 
@@ -259,7 +260,7 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final Reader reader, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final Reader reader, final Version schemaVersion) throws IOException {
         return validate(reader, schemaVersion).isEmpty();
     }
 
@@ -273,7 +274,7 @@ public class XmlParser extends CycloneDxSchema implements Parser {
     /**
      * {@inheritDoc}
      */
-    public boolean isValid(final InputStream inputStream, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public boolean isValid(final InputStream inputStream, final Version schemaVersion) throws IOException {
         return validate(inputStream, schemaVersion).isEmpty();
     }
 
diff --git a/src/main/java/org/cyclonedx/util/BomUtils.java b/src/main/java/org/cyclonedx/util/BomUtils.java
index 820ffac34..c096534f9 100644
--- a/src/main/java/org/cyclonedx/util/BomUtils.java
+++ b/src/main/java/org/cyclonedx/util/BomUtils.java
@@ -20,7 +20,7 @@ package org.cyclonedx.util;
 
 import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.Hash;
 import java.io.BufferedInputStream;
 import java.io.File;
@@ -52,7 +52,7 @@ public final class BomUtils {
      * @throws IOException an IOException
      * @since 1.0.0
      */
-    public static List<Hash> calculateHashes(final File file, final CycloneDxSchema.Version schemaVersion) throws IOException {
+    public static List<Hash> calculateHashes(final File file, final Version schemaVersion) throws IOException {
         if (file == null || !file.exists() || !file.canRead() || !file.isFile()) {
             return null;
         }
diff --git a/src/main/java/org/cyclonedx/util/VersionJsonAnnotationIntrospector.java b/src/main/java/org/cyclonedx/util/introspector/VersionJsonAnnotationIntrospector.java
similarity index 85%
rename from src/main/java/org/cyclonedx/util/VersionJsonAnnotationIntrospector.java
rename to src/main/java/org/cyclonedx/util/introspector/VersionJsonAnnotationIntrospector.java
index b24b5aa86..bf07dc524 100644
--- a/src/main/java/org/cyclonedx/util/VersionJsonAnnotationIntrospector.java
+++ b/src/main/java/org/cyclonedx/util/introspector/VersionJsonAnnotationIntrospector.java
@@ -16,19 +16,19 @@
  * SPDX-License-Identifier: Apache-2.0
  * Copyright (c) OWASP Foundation. All Rights Reserved.
  */
-package org.cyclonedx.util;
+package org.cyclonedx.util.introspector;
 
-import java.util.Arrays;
 import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
 import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.VersionFilter;
 import org.cyclonedx.model.XmlOnly;
 
 public class VersionJsonAnnotationIntrospector extends JacksonAnnotationIntrospector
 {
-    private final String version;
+    private final Version version;
 
-    public VersionJsonAnnotationIntrospector(final String version) {
+    public VersionJsonAnnotationIntrospector(final Version version) {
         this.version = version;
     }
 
@@ -36,7 +36,7 @@ public class VersionJsonAnnotationIntrospector extends JacksonAnnotationIntrospe
     public boolean hasIgnoreMarker(final AnnotatedMember m) {
         if (m.hasAnnotation(VersionFilter.class)) {
             VersionFilter filter = m.getAnnotation(VersionFilter.class);
-            if (Arrays.asList(filter.versions()).contains(version)) {
+            if (filter.value().getVersion() > version.getVersion()) {
                 return true;
             }
         }
diff --git a/src/main/java/org/cyclonedx/util/VersionXmlAnnotationIntrospector.java b/src/main/java/org/cyclonedx/util/introspector/VersionXmlAnnotationIntrospector.java
similarity index 85%
rename from src/main/java/org/cyclonedx/util/VersionXmlAnnotationIntrospector.java
rename to src/main/java/org/cyclonedx/util/introspector/VersionXmlAnnotationIntrospector.java
index b0a0a6814..057dd8dcf 100644
--- a/src/main/java/org/cyclonedx/util/VersionXmlAnnotationIntrospector.java
+++ b/src/main/java/org/cyclonedx/util/introspector/VersionXmlAnnotationIntrospector.java
@@ -16,20 +16,19 @@
  * SPDX-License-Identifier: Apache-2.0
  * Copyright (c) OWASP Foundation. All Rights Reserved.
  */
-package org.cyclonedx.util;
-
-import java.util.Arrays;
+package org.cyclonedx.util.introspector;
 
 import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
 import com.fasterxml.jackson.dataformat.xml.JacksonXmlAnnotationIntrospector;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.JsonOnly;
 import org.cyclonedx.model.VersionFilter;
 
 public class VersionXmlAnnotationIntrospector extends JacksonXmlAnnotationIntrospector
 {
-  private final String version;
+  private final Version version;
 
-  public VersionXmlAnnotationIntrospector(final String version) {
+  public VersionXmlAnnotationIntrospector(final Version version) {
     this.version = version;
   }
 
@@ -37,7 +36,7 @@ public class VersionXmlAnnotationIntrospector extends JacksonXmlAnnotationIntros
   public boolean hasIgnoreMarker(final AnnotatedMember m) {
     if (m.hasAnnotation(VersionFilter.class)) {
       VersionFilter filter = m.getAnnotation(VersionFilter.class);
-      if (Arrays.asList(filter.versions()).contains(version)) {
+      if (filter.value().getVersion() > version.getVersion()) {
         return true;
       }
     }
diff --git a/src/main/java/org/cyclonedx/util/serializer/MetadataSerializer.java b/src/main/java/org/cyclonedx/util/serializer/MetadataSerializer.java
index c2864f9f6..4736f26fe 100644
--- a/src/main/java/org/cyclonedx/util/serializer/MetadataSerializer.java
+++ b/src/main/java/org/cyclonedx/util/serializer/MetadataSerializer.java
@@ -7,7 +7,7 @@ import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
 import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
-import org.cyclonedx.CycloneDxSchema.Version;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.Metadata;
 import org.cyclonedx.model.Property;
 import org.cyclonedx.model.metadata.ToolInformation;


Test patch:
diff --git a/src/test/java/org/cyclonedx/BomJsonGeneratorTest.java b/src/test/java/org/cyclonedx/BomJsonGeneratorTest.java
index fe0698366..e4d8fd89e 100644
--- a/src/test/java/org/cyclonedx/BomJsonGeneratorTest.java
+++ b/src/test/java/org/cyclonedx/BomJsonGeneratorTest.java
@@ -20,7 +20,6 @@ package org.cyclonedx;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import org.apache.commons.io.IOUtils;
-import org.cyclonedx.CycloneDxSchema.Version;
 import org.cyclonedx.generators.json.BomJsonGenerator;
 import org.cyclonedx.generators.json.BomJsonGenerator12;
 import org.cyclonedx.generators.json.BomJsonGenerator13;
@@ -65,10 +64,10 @@ public class BomJsonGeneratorTest {
         Bom bom =  createCommonBom("/bom-1.2.xml");
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_12, bom);
         assertTrue(generator instanceof BomJsonGenerator12);
-        assertEquals(CycloneDxSchema.Version.VERSION_12, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_12, generator.getSchemaVersion());
         File file = writeToFile(generator.toJsonString());
         JsonParser parser = new JsonParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_12));
+        assertTrue(parser.isValid(file, Version.VERSION_12));
     }
 
     @Test
@@ -93,10 +92,10 @@ public class BomJsonGeneratorTest {
 
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_12, bom);
         assertTrue(generator instanceof BomJsonGenerator12);
-        assertEquals(CycloneDxSchema.Version.VERSION_12, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_12, generator.getSchemaVersion());
         File file = writeToFile(generator.toJsonString());
         JsonParser jsonParser = new JsonParser();
-        assertTrue(jsonParser.isValid(file, CycloneDxSchema.Version.VERSION_12));
+        assertTrue(jsonParser.isValid(file, Version.VERSION_12));
     }
 
     @Test
@@ -106,10 +105,10 @@ public class BomJsonGeneratorTest {
         bom.setDependencies(new ArrayList<>());
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_13, bom);
         assertTrue(generator instanceof BomJsonGenerator13);
-        assertEquals(CycloneDxSchema.Version.VERSION_13, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_13, generator.getSchemaVersion());
         File file = writeToFile(generator.toJsonString());
         JsonParser parser = new JsonParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_13));
+        assertTrue(parser.isValid(file, Version.VERSION_13));
     }
 
     @Test
@@ -120,10 +119,10 @@ public class BomJsonGeneratorTest {
 
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_13, bom);
         assertTrue(generator instanceof BomJsonGenerator13);
-        assertEquals(CycloneDxSchema.Version.VERSION_13, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_13, generator.getSchemaVersion());
         File file = writeToFile(generator.toJsonString());
         JsonParser jsonParser = new JsonParser();
-        assertTrue(jsonParser.isValid(file, CycloneDxSchema.Version.VERSION_13));
+        assertTrue(jsonParser.isValid(file, Version.VERSION_13));
     }
 
     @Test
@@ -132,11 +131,11 @@ public class BomJsonGeneratorTest {
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_13, bom);
 
         assertTrue(generator instanceof BomJsonGenerator13);
-        assertEquals(CycloneDxSchema.Version.VERSION_13, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_13, generator.getSchemaVersion());
 
         File file = writeToFile(generator.toJsonString());
         JsonParser parser = new JsonParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_13));
+        assertTrue(parser.isValid(file, Version.VERSION_13));
     }
 
     @Test
@@ -145,11 +144,11 @@ public class BomJsonGeneratorTest {
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_14, bom);
 
         assertTrue(generator instanceof BomJsonGenerator14);
-        assertEquals(CycloneDxSchema.Version.VERSION_14, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_14, generator.getSchemaVersion());
 
         File file = writeToFile(generator.toJsonString());
         JsonParser parser = new JsonParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(parser.isValid(file, Version.VERSION_14));
     }
 
     @Test
@@ -160,10 +159,10 @@ public class BomJsonGeneratorTest {
 
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_14, bom);
         assertTrue(generator instanceof BomJsonGenerator14);
-        assertEquals(CycloneDxSchema.Version.VERSION_14, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_14, generator.getSchemaVersion());
         File file = writeToFile(generator.toJsonString());
         JsonParser jsonParser = new JsonParser();
-        assertTrue(jsonParser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(jsonParser.isValid(file, Version.VERSION_14));
     }
 
     @Test
@@ -172,7 +171,7 @@ public class BomJsonGeneratorTest {
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_14, bom);
         File file = writeToFile(generator.toJsonString());
         JsonParser parser = new JsonParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(parser.isValid(file, Version.VERSION_14));
         Bom bom2 = parser.parse(file);
         assertNotNull(bom2.getComponents().get(0).getExternalReferences());
         assertEquals("bom", bom2.getComponents().get(0).getExternalReferences().get(0).getType().getTypeName());
@@ -184,11 +183,11 @@ public class BomJsonGeneratorTest {
         Bom bom = createCommonBom("/bom-1.5.xml");
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_15, bom);
         assertTrue(generator instanceof BomJsonGenerator15);
-        assertEquals(CycloneDxSchema.Version.VERSION_15, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_15, generator.getSchemaVersion());
 
         File file = writeToFile(generator.toJsonString());
         JsonParser parser = new JsonParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_15));
+        assertTrue(parser.isValid(file, Version.VERSION_15));
     }
 
     @Test
@@ -196,11 +195,11 @@ public class BomJsonGeneratorTest {
         Bom bom = createCommonBom("/bom-1.6.xml");
         BomJsonGenerator generator = BomGeneratorFactory.createJson(Version.VERSION_16, bom);
         assertTrue(generator instanceof BomJsonGenerator16);
-        assertEquals(CycloneDxSchema.Version.VERSION_16, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_16, generator.getSchemaVersion());
 
         File file = writeToFile(generator.toJsonString());
         JsonParser parser = new JsonParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_16));
+        assertTrue(parser.isValid(file, Version.VERSION_16));
     }
 
 
diff --git a/src/test/java/org/cyclonedx/BomXmlGeneratorTest.java b/src/test/java/org/cyclonedx/BomXmlGeneratorTest.java
index 814d988c8..e6bcf3ad8 100644
--- a/src/test/java/org/cyclonedx/BomXmlGeneratorTest.java
+++ b/src/test/java/org/cyclonedx/BomXmlGeneratorTest.java
@@ -19,7 +19,6 @@
 package org.cyclonedx;
 
 import org.apache.commons.io.IOUtils;
-import org.cyclonedx.CycloneDxSchema.Version;
 import org.cyclonedx.generators.xml.*;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
@@ -69,12 +68,12 @@ public class BomXmlGeneratorTest {
 
     @Test
     public void schema10GenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_10, createCommonBom("/bom-1.0.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_10, createCommonBom("/bom-1.0.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator10);
-        assertEquals(CycloneDxSchema.Version.VERSION_10, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_10, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
         assertTrue(parser.isValid(file, Version.VERSION_10));
@@ -82,67 +81,67 @@ public class BomXmlGeneratorTest {
 
     @Test
     public void schema11WithDependencyGraphGenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_11, createCommonBom("/bom-1.1-dependency-graph-1.0.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_11, createCommonBom("/bom-1.1-dependency-graph-1.0.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator11);
-        assertEquals(CycloneDxSchema.Version.VERSION_11, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_11, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_11));
+        assertTrue(parser.isValid(file, Version.VERSION_11));
     }
 
     @Test
     public void schema11WithVulnerabilitiesGenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_11, createCommonBom("/bom-1.1-vulnerability-1.0.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_11, createCommonBom("/bom-1.1-vulnerability-1.0.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator11);
-        assertEquals(CycloneDxSchema.Version.VERSION_11, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_11, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_11));
+        assertTrue(parser.isValid(file, Version.VERSION_11));
     }
 
     @Test
     public void schema11GenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_11, createCommonBom());
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_11, createCommonBom());
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator11);
-        assertEquals(CycloneDxSchema.Version.VERSION_11, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_11, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_11));
+        assertTrue(parser.isValid(file, Version.VERSION_11));
     }
 
     @Test
     public void schema12GenerationTestWith11Data() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_12, createCommonBom());
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_12, createCommonBom());
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator12);
-        assertEquals(CycloneDxSchema.Version.VERSION_12, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_12, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_12));
+        assertTrue(parser.isValid(file, Version.VERSION_12));
     }
 
     @Test
     public void schema12GenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_12, createCommonBom("/bom-1.2.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_12, createCommonBom("/bom-1.2.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator12);
-        assertEquals(CycloneDxSchema.Version.VERSION_12, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_12, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_12));
+        assertTrue(parser.isValid(file, Version.VERSION_12));
     }
 
     @Test
@@ -153,36 +152,36 @@ public class BomXmlGeneratorTest {
 
         BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_12, bom);
         assertTrue(generator instanceof BomXmlGenerator12);
-        assertEquals(CycloneDxSchema.Version.VERSION_12, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_12, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser xmlParser = new XmlParser();
-        assertTrue(xmlParser.isValid(file, CycloneDxSchema.Version.VERSION_12));
+        assertTrue(xmlParser.isValid(file, Version.VERSION_12));
     }
 
     @Test
     public void schema12GenerationWithPedigreeDataTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_12, createCommonBom("/bom-1.2-pedigree.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_12, createCommonBom("/bom-1.2-pedigree.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator12);
-        assertEquals(CycloneDxSchema.Version.VERSION_12, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_12, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_12));
+        assertTrue(parser.isValid(file, Version.VERSION_12));
     }
 
     @Test
     public void schema13GenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_13, createCommonBom("/bom-1.3.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_13, createCommonBom("/bom-1.3.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator13);
-        assertEquals(CycloneDxSchema.Version.VERSION_13, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_13, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_13));
+        assertTrue(parser.isValid(file, Version.VERSION_13));
     }
 
     @Test
@@ -193,23 +192,23 @@ public class BomXmlGeneratorTest {
 
         BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_13, bom);
         assertTrue(generator instanceof BomXmlGenerator13);
-        assertEquals(CycloneDxSchema.Version.VERSION_13, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_13, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser xmlParser = new XmlParser();
-        assertTrue(xmlParser.isValid(file, CycloneDxSchema.Version.VERSION_13));
+        assertTrue(xmlParser.isValid(file, Version.VERSION_13));
     }
 
     @Test
     public void schema14GenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_14, createCommonBom("/bom-1.4.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_14, createCommonBom("/bom-1.4.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator14);
-        assertEquals(CycloneDxSchema.Version.VERSION_14, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_14, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(parser.isValid(file, Version.VERSION_14));
     }
 
     @Test
@@ -220,10 +219,10 @@ public class BomXmlGeneratorTest {
 
         BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_14, bom);
         assertTrue(generator instanceof BomXmlGenerator14);
-        assertEquals(CycloneDxSchema.Version.VERSION_14, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_14, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser xmlParser = new XmlParser();
-        assertTrue(xmlParser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(xmlParser.isValid(file, Version.VERSION_14));
     }
 
     @Test
@@ -247,15 +246,15 @@ public class BomXmlGeneratorTest {
 
         Bom bom = new Bom();
         bom.addComponent(c);
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_11, bom);
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_11, bom);
         Document doc = generator.generate();
 
         testDocument(doc);
         assertTrue(generator instanceof BomXmlGenerator11);
-        assertEquals(CycloneDxSchema.Version.VERSION_11, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_11, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_11));
+        assertTrue(parser.isValid(file, Version.VERSION_11));
     }
 
     @Test
@@ -284,15 +283,15 @@ public class BomXmlGeneratorTest {
         t1.addExtensibleType(t2);
         bom.addExtensibleType(t1);
 
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_11, bom);
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_11, bom);
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator11);
-        assertEquals(CycloneDxSchema.Version.VERSION_11, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_11, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_11));
+        assertTrue(parser.isValid(file, Version.VERSION_11));
     }
 
     @Test
@@ -302,10 +301,10 @@ public class BomXmlGeneratorTest {
         bom.setDependencies(new ArrayList<>());
         BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_13, bom);
         assertTrue(generator instanceof BomXmlGenerator13);
-        assertEquals(CycloneDxSchema.Version.VERSION_13, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_13, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_13));
+        assertTrue(parser.isValid(file, Version.VERSION_13));
     }
 
     @Test
@@ -314,7 +313,7 @@ public class BomXmlGeneratorTest {
         BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_14, bom);
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(parser.isValid(file, Version.VERSION_14));
         Bom bom2 = parser.parse(file);
         assertNotNull(bom2.getComponents().get(0).getExternalReferences());
         assertEquals("bom", bom2.getComponents().get(0).getExternalReferences().get(0).getType().getTypeName());
@@ -323,28 +322,28 @@ public class BomXmlGeneratorTest {
 
     @Test
     public void schema15GenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_15, createCommonBom("/bom-1.5.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_15, createCommonBom("/bom-1.5.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator15);
-        assertEquals(CycloneDxSchema.Version.VERSION_15, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_15, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_15));
+        assertTrue(parser.isValid(file, Version.VERSION_15));
     }
 
     @Test
     public void schema16GenerationTest() throws Exception {
-        BomXmlGenerator generator = BomGeneratorFactory.createXml(CycloneDxSchema.Version.VERSION_16, createCommonBom("/bom-1.6.xml"));
+        BomXmlGenerator generator = BomGeneratorFactory.createXml(Version.VERSION_16, createCommonBom("/bom-1.6.xml"));
         Document doc = generator.generate();
         testDocument(doc);
 
         assertTrue(generator instanceof BomXmlGenerator16);
-        assertEquals(CycloneDxSchema.Version.VERSION_16, generator.getSchemaVersion());
+        assertEquals(Version.VERSION_16, generator.getSchemaVersion());
         File file = writeToFile(generator.toXmlString());
         XmlParser parser = new XmlParser();
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_16));
+        assertTrue(parser.isValid(file, Version.VERSION_16));
     }
 
     private File writeToFile(String xmlString) throws Exception {
diff --git a/src/test/java/org/cyclonedx/Issue214RegressionTest.java b/src/test/java/org/cyclonedx/Issue214RegressionTest.java
index cc9ed3672..6a0f394f1 100644
--- a/src/test/java/org/cyclonedx/Issue214RegressionTest.java
+++ b/src/test/java/org/cyclonedx/Issue214RegressionTest.java
@@ -45,38 +45,38 @@ public class Issue214RegressionTest
     public void schema13JsonObjectGenerationTest()
         throws IOException, ReflectiveOperationException
     {
-        performJsonTest(CycloneDxSchema.Version.VERSION_13, BomJsonGenerator13.class);
+        performJsonTest(Version.VERSION_13, BomJsonGenerator13.class);
     }
 
     @Test
     public void schema14JsonObjectGenerationTest()
         throws IOException, ReflectiveOperationException
     {
-        performJsonTest(CycloneDxSchema.Version.VERSION_14, BomJsonGenerator14.class);
+        performJsonTest(Version.VERSION_14, BomJsonGenerator14.class);
     }
 
     @Test
     public void schema13XmlObjectGenerationTest()
         throws ParserConfigurationException, IOException, ReflectiveOperationException
     {
-        performXmlTest(CycloneDxSchema.Version.VERSION_13, BomXmlGenerator13.class);
+        performXmlTest(Version.VERSION_13, BomXmlGenerator13.class);
     }
 
     @Test
     public void schema14XmlObjectGenerationTest()
         throws ParserConfigurationException, IOException, ReflectiveOperationException
     {
-        performXmlTest(CycloneDxSchema.Version.VERSION_14, BomXmlGenerator14.class);
+        performXmlTest(Version.VERSION_14, BomXmlGenerator14.class);
     }
 
     @Test
     public void schema15XmlObjectGenerationTest()
         throws ParserConfigurationException, IOException, ReflectiveOperationException
     {
-        performXmlTest(CycloneDxSchema.Version.VERSION_15, BomXmlGenerator15.class);
+        performXmlTest(Version.VERSION_15, BomXmlGenerator15.class);
     }
 
-    private <G extends AbstractBomXmlGenerator> void performXmlTest(final CycloneDxSchema.Version pSpecVersion,
+    private <G extends AbstractBomXmlGenerator> void performXmlTest(final Version pSpecVersion,
         final Class<G> pExpectedGeneratorClass)
         throws ParserConfigurationException, IOException, ReflectiveOperationException
     {
@@ -93,7 +93,7 @@ public class Issue214RegressionTest
         validate(actual, XmlParser.class, pSpecVersion);
     }
 
-    private <G extends AbstractBomJsonGenerator> void performJsonTest(final CycloneDxSchema.Version pSpecVersion,
+    private <G extends AbstractBomJsonGenerator> void performJsonTest(final Version pSpecVersion,
         final Class<G> pExpectedGeneratorClass)
         throws IOException, ReflectiveOperationException
     {
@@ -133,7 +133,7 @@ public class Issue214RegressionTest
         return null;
     }
 
-    private String readFixture(final String pPath, final CycloneDxSchema.Version pSpecVersion)
+    private String readFixture(final String pPath, final Version pSpecVersion)
     {
         try (InputStream is = getClass().getResourceAsStream(pPath)) {
             if (is != null) {
@@ -177,7 +177,7 @@ public class Issue214RegressionTest
     }
 
     private <P extends Parser> void validate(final String pDocument, final Class<P> pParserType,
-        final CycloneDxSchema.Version pSpecVersion)
+        final Version pSpecVersion)
         throws IOException, ReflectiveOperationException
     {
         File tempFile = null;
diff --git a/src/test/java/org/cyclonedx/parse/BaseParseTest.java b/src/test/java/org/cyclonedx/parse/BaseParseTest.java
index 2f14afff7..89e55a3e7 100644
--- a/src/test/java/org/cyclonedx/parse/BaseParseTest.java
+++ b/src/test/java/org/cyclonedx/parse/BaseParseTest.java
@@ -21,6 +21,7 @@ package org.cyclonedx.parse;
 import org.cyclonedx.BomGeneratorFactory;
 import org.cyclonedx.BomParserFactory;
 import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.ParseException;
 import org.cyclonedx.generators.json.BomJsonGenerator;
 import org.cyclonedx.generators.xml.BomXmlGenerator;
@@ -40,7 +41,7 @@ public abstract class BaseParseTest {
 
     List<File> getAllResources() {
         final List<File> files = new ArrayList<>();
-        for (CycloneDxSchema.Version version: CycloneDxSchema.ALL_VERSIONS) {
+        for (Version version: CycloneDxSchema.ALL_VERSIONS) {
             files.addAll(getResources(version.getVersionString() + "/"));
         }
         return files;
@@ -59,7 +60,7 @@ public abstract class BaseParseTest {
     }
 
     void generateBomXml(final String testName, final Bom bom) throws ParserConfigurationException {
-        for (CycloneDxSchema.Version version : CycloneDxSchema.ALL_VERSIONS) {
+        for (Version version : CycloneDxSchema.ALL_VERSIONS) {
             System.out.println("Generating CycloneDX " + version.getVersionString() + " XML for " + testName);
             BomXmlGenerator generator = BomGeneratorFactory.createXml(version, bom);
             Document doc = generator.generate();
@@ -68,7 +69,7 @@ public abstract class BaseParseTest {
     }
 
     void generateBomJson(final String testName, final Bom bom) {
-        for (CycloneDxSchema.Version version : CycloneDxSchema.ALL_VERSIONS) {
+        for (Version version : CycloneDxSchema.ALL_VERSIONS) {
             System.out.println("Generating CycloneDX " + version.getVersionString() + " JSON for " + testName);
             BomJsonGenerator generator = BomGeneratorFactory.createJson(version, bom);
             Assertions.assertNotNull(generator.toJsonString());
diff --git a/src/test/java/org/cyclonedx/parsers/AbstractParserTest.java b/src/test/java/org/cyclonedx/parsers/AbstractParserTest.java
index 295345fe0..df9c1a957 100644
--- a/src/test/java/org/cyclonedx/parsers/AbstractParserTest.java
+++ b/src/test/java/org/cyclonedx/parsers/AbstractParserTest.java
@@ -24,7 +24,7 @@ import java.util.List;
 import java.util.Objects;
 
 import org.apache.commons.io.IOUtils;
-import org.cyclonedx.CycloneDxSchema.Version;
+import org.cyclonedx.Version;
 import org.cyclonedx.exception.ParseException;
 import org.cyclonedx.model.Annotation;
 import org.cyclonedx.model.Annotator;
diff --git a/src/test/java/org/cyclonedx/parsers/JsonParserTest.java b/src/test/java/org/cyclonedx/parsers/JsonParserTest.java
index 893116628..98183b09b 100644
--- a/src/test/java/org/cyclonedx/parsers/JsonParserTest.java
+++ b/src/test/java/org/cyclonedx/parsers/JsonParserTest.java
@@ -18,8 +18,7 @@
  */
 package org.cyclonedx.parsers;
 
-import org.cyclonedx.CycloneDxSchema;
-import org.cyclonedx.CycloneDxSchema.Version;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
 import org.cyclonedx.model.Dependency;
@@ -43,7 +42,7 @@ public class JsonParserTest
         final File file = new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.2.json")).getFile());
         final JsonParser parser = new JsonParser();
         Bom bom = parser.parse(file);
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_12));
+        assertTrue(parser.isValid(file, Version.VERSION_12));
         System.out.println(bom.getSerialNumber());
     }
 
@@ -117,7 +116,7 @@ public class JsonParserTest
             new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.4-bomlink.json")).getFile());
         final JsonParser parser = new JsonParser();
         Bom bom = parser.parse(file);
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(parser.isValid(file, Version.VERSION_14));
         ExternalReference ref = bom.getComponents().get(0).getExternalReferences().get(0);
         assertEquals("bom", ref.getType().getTypeName());
         assertEquals("urn:cdx:f08a6ccd-4dce-4759-bd84-c626675d60a7/1", ref.getUrl());
diff --git a/src/test/java/org/cyclonedx/parsers/XmlParserTest.java b/src/test/java/org/cyclonedx/parsers/XmlParserTest.java
index a7568e86b..8c4ec774a 100644
--- a/src/test/java/org/cyclonedx/parsers/XmlParserTest.java
+++ b/src/test/java/org/cyclonedx/parsers/XmlParserTest.java
@@ -18,8 +18,7 @@
  */
 package org.cyclonedx.parsers;
 
-import org.cyclonedx.CycloneDxSchema;
-import org.cyclonedx.CycloneDxSchema.Version;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.Bom;
 import org.cyclonedx.model.Component;
 import org.cyclonedx.model.Dependency;
@@ -43,7 +42,7 @@ public class XmlParserTest
     public void testValid10Bom() throws Exception {
         final File file = new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.0.xml")).getFile());
         final XmlParser parser = new XmlParser();
-        final boolean valid = parser.isValid(file, CycloneDxSchema.Version.VERSION_10);
+        final boolean valid = parser.isValid(file, Version.VERSION_10);
         assertTrue(valid);
     }
 
@@ -51,7 +50,7 @@ public class XmlParserTest
     public void testValid11Bom() throws Exception {
         final File file = new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.1.xml")).getFile());
         final XmlParser parser = new XmlParser();
-        final boolean valid = parser.isValid(file, CycloneDxSchema.Version.VERSION_11);
+        final boolean valid = parser.isValid(file, Version.VERSION_11);
         assertTrue(valid);
     }
 
@@ -60,7 +59,7 @@ public class XmlParserTest
         final File file = new File(
             Objects.requireNonNull(this.getClass().getResource("/bom-1.1-dependency-graph-1.0.xml")).getFile());
         final XmlParser parser = new XmlParser();
-        final boolean valid = parser.isValid(file, CycloneDxSchema.Version.VERSION_11);
+        final boolean valid = parser.isValid(file, Version.VERSION_11);
         assertTrue(valid);
     }
 
@@ -69,7 +68,7 @@ public class XmlParserTest
         final File file = new File(
             Objects.requireNonNull(this.getClass().getResource("/bom-1.1-vulnerability-1.0.xml")).getFile());
         final XmlParser parser = new XmlParser();
-        final boolean valid = parser.isValid(file, CycloneDxSchema.Version.VERSION_11);
+        final boolean valid = parser.isValid(file, Version.VERSION_11);
         assertTrue(valid);
     }
 
@@ -77,7 +76,7 @@ public class XmlParserTest
     public void testValid12Bom() throws Exception {
         final File file = new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.2.xml")).getFile());
         final XmlParser parser = new XmlParser();
-        final boolean valid = parser.isValid(file, CycloneDxSchema.Version.VERSION_12);
+        final boolean valid = parser.isValid(file, Version.VERSION_12);
         assertTrue(valid);
     }
 
@@ -86,7 +85,7 @@ public class XmlParserTest
         final File file = new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.4-bomlink.xml")).getFile());
         final XmlParser parser = new XmlParser();
         Bom bom = parser.parse(file);
-        assertTrue(parser.isValid(file, CycloneDxSchema.Version.VERSION_14));
+        assertTrue(parser.isValid(file, Version.VERSION_14));
         ExternalReference ref = bom.getComponents().get(0).getExternalReferences().get(0);
         assertEquals("bom", ref.getType().getTypeName());
         assertEquals("urn:cdx:f08a6ccd-4dce-4759-bd84-c626675d60a7/1", ref.getUrl());
@@ -96,7 +95,7 @@ public class XmlParserTest
     public void testValid12BomWithPedigree() throws Exception {
         final File file = new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.2-pedigree.xml")).getFile());
         final XmlParser parser = new XmlParser();
-        final boolean valid = parser.isValid(file, CycloneDxSchema.Version.VERSION_12);
+        final boolean valid = parser.isValid(file, Version.VERSION_12);
         assertTrue(valid);
 
         final Bom bom = parser.parse(file);
@@ -113,7 +112,7 @@ public class XmlParserTest
     public void testValid12BomWithPedigreeWithPatches() throws Exception {
         final File file = new File(Objects.requireNonNull(this.getClass().getResource("/bom-1.2-pedigree-example.xml")).getFile());
         final XmlParser parser = new XmlParser();
-        final boolean valid = parser.isValid(file, CycloneDxSchema.Version.VERSION_12);
+        final boolean valid = parser.isValid(file, Version.VERSION_12);
         assertTrue(valid);
 
         final Bom bom = parser.parse(file);
diff --git a/src/test/java/org/cyclonedx/schema/BaseSchemaVerificationTest.java b/src/test/java/org/cyclonedx/schema/BaseSchemaVerificationTest.java
index a44c41e7c..3156b9bc1 100644
--- a/src/test/java/org/cyclonedx/schema/BaseSchemaVerificationTest.java
+++ b/src/test/java/org/cyclonedx/schema/BaseSchemaVerificationTest.java
@@ -20,7 +20,7 @@ package org.cyclonedx.schema;
 
 import org.apache.commons.io.IOUtils;
 import org.cyclonedx.CycloneDxSchema;
-import org.cyclonedx.CycloneDxSchema.Version;
+import org.cyclonedx.Version;
 
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
diff --git a/src/test/java/org/cyclonedx/schema/JsonSchemaVerificationTest.java b/src/test/java/org/cyclonedx/schema/JsonSchemaVerificationTest.java
index 7d1a0b44a..ced7bcc81 100644
--- a/src/test/java/org/cyclonedx/schema/JsonSchemaVerificationTest.java
+++ b/src/test/java/org/cyclonedx/schema/JsonSchemaVerificationTest.java
@@ -18,7 +18,7 @@
  */
 package org.cyclonedx.schema;
 
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.parsers.JsonParser;
 import org.junit.jupiter.api.DynamicTest;
 import org.junit.jupiter.api.TestFactory;
@@ -38,21 +38,21 @@ public class JsonSchemaVerificationTest extends BaseSchemaVerificationTest {
         final List<DynamicTest> dynamicTests = new ArrayList<>();
         for (final String file: files) {
             if (file.endsWith(".json")) {
-                final CycloneDxSchema.Version schemaVersion;
+                final Version schemaVersion;
                 if (file.endsWith("-1.2.json")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_12;
+                    schemaVersion = Version.VERSION_12;
                 }
                 else if (file.endsWith("-1.3.json")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_13;
+                    schemaVersion = Version.VERSION_13;
                 }
                 else if (file.endsWith("-1.4.json")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_14;
+                    schemaVersion = Version.VERSION_14;
                 }
                 else if (file.endsWith("-1.5.json")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_15;
+                    schemaVersion = Version.VERSION_15;
                 }
                 else if (file.endsWith("-1.6.json")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_16;
+                    schemaVersion = Version.VERSION_16;
                 }
                 else {
                     schemaVersion = null;
@@ -69,7 +69,7 @@ public class JsonSchemaVerificationTest extends BaseSchemaVerificationTest {
         return dynamicTests;
     }
 
-    private boolean isValidJson(CycloneDxSchema.Version version, String resource) throws Exception {
+    private boolean isValidJson(Version version, String resource) throws Exception {
         final File file = new File(this.getClass().getResource(resource).getFile());
         final JsonParser parser = new JsonParser();
         return parser.isValid(file, version);
diff --git a/src/test/java/org/cyclonedx/schema/XmlSchemaVerificationTest.java b/src/test/java/org/cyclonedx/schema/XmlSchemaVerificationTest.java
index 2e8337a79..bbc19c8a7 100644
--- a/src/test/java/org/cyclonedx/schema/XmlSchemaVerificationTest.java
+++ b/src/test/java/org/cyclonedx/schema/XmlSchemaVerificationTest.java
@@ -18,7 +18,7 @@
  */
 package org.cyclonedx.schema;
 
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.parsers.XmlParser;
 import org.junit.jupiter.api.DynamicTest;
 import org.junit.jupiter.api.TestFactory;
@@ -39,27 +39,27 @@ public class XmlSchemaVerificationTest extends BaseSchemaVerificationTest {
         final List<DynamicTest> dynamicTests = new ArrayList<>();
         for (final String file: files) {
             if (file.endsWith(".xml")) {
-                final CycloneDxSchema.Version schemaVersion;
+                final Version schemaVersion;
                 if (file.endsWith("-1.0.xml")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_10;
+                    schemaVersion = Version.VERSION_10;
                 }
                 else if (file.endsWith("-1.1.xml")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_11;
+                    schemaVersion = Version.VERSION_11;
                 }
                 else if (file.endsWith("-1.2.xml")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_12;
+                    schemaVersion = Version.VERSION_12;
                 }
                 else if (file.endsWith("-1.3.xml")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_13;
+                    schemaVersion = Version.VERSION_13;
                 }
                 else if (file.endsWith("-1.4.xml")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_14;
+                    schemaVersion = Version.VERSION_14;
                 }
                 else if (file.endsWith("-1.5.xml")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_15;
+                    schemaVersion = Version.VERSION_15;
                 }
                 else if (file.endsWith("-1.6.xml")) {
-                    schemaVersion = CycloneDxSchema.Version.VERSION_16;
+                    schemaVersion = Version.VERSION_16;
                 }
                 else {
                     schemaVersion = null;
@@ -76,7 +76,7 @@ public class XmlSchemaVerificationTest extends BaseSchemaVerificationTest {
         return dynamicTests;
     }
 
-    private boolean isValid(CycloneDxSchema.Version version, String resource) throws Exception {
+    private boolean isValid(Version version, String resource) throws Exception {
         final File file = new File(this.getClass().getResource(resource).getFile());
         final XmlParser parser = new XmlParser();
         return parser.isValid(file, version);
diff --git a/src/test/java/org/cyclonedx/util/BomUtilsTest.java b/src/test/java/org/cyclonedx/util/BomUtilsTest.java
index fab32991c..d28f71a75 100644
--- a/src/test/java/org/cyclonedx/util/BomUtilsTest.java
+++ b/src/test/java/org/cyclonedx/util/BomUtilsTest.java
@@ -20,7 +20,7 @@ package org.cyclonedx.util;
 
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
-import org.cyclonedx.CycloneDxSchema;
+import org.cyclonedx.Version;
 import org.cyclonedx.model.Hash;
 import org.junit.jupiter.api.Test;
 import java.io.File;
@@ -46,7 +46,7 @@ public class BomUtilsTest {
     public void calculateHashesTest() throws Exception {
         final File file = new File(this.getClass().getResource("/hashtest.txt").toURI());
 
-        final List<Hash> hashes = BomUtils.calculateHashes(file, CycloneDxSchema.Version.VERSION_12);
+        final List<Hash> hashes = BomUtils.calculateHashes(file, Version.VERSION_12);
 
         assertThatHashIsComputed(hashes, MD5, "5dd39cab1c53c2c77cd352983f9641e1");
         assertThatHashIsComputed(hashes, SHA1, "b56df8ed5365fca1419818aa384ba3b5e7756047");
@@ -64,7 +64,7 @@ public class BomUtilsTest {
     public void calculateHashesForBigFileTest() throws Exception {
         final File file = generateBigFileWithReproductiveContent();
 
-        final List<Hash> hashes = BomUtils.calculateHashes(file, CycloneDxSchema.Version.VERSION_12);
+        final List<Hash> hashes = BomUtils.calculateHashes(file, Version.VERSION_12);
 
         assertThatHashIsComputed(hashes, MD5, "10be767d4f5874017ca03f3a9fe6627b");
         assertThatHashIsComputed(hashes, SHA1, "ae3c58e2a2d5e897b141c6552232976b99d91c9b");