diff --git a/base/src/main/java/de/staropensource/sosengine/base/types/immutable/ImmutableHashSet.java b/base/src/main/java/de/staropensource/sosengine/base/types/immutable/ImmutableHashSet.java
new file mode 100644
index 0000000..db18eea
--- /dev/null
+++ b/base/src/main/java/de/staropensource/sosengine/base/types/immutable/ImmutableHashSet.java
@@ -0,0 +1,123 @@
+/*
+ * STAROPENSOURCE ENGINE SOURCE FILE
+ * Copyright (c) 2024 The StarOpenSource Engine Contributors
+ * Licensed under the GNU Affero General Public License v3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.staropensource.sosengine.base.types.immutable;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Predicate;
+
+/**
+ * An unmodifiable {@link HashSet}.
+ *
+ * @param contained type
+ * @since v1-alpha2
+ */
+@SuppressWarnings({ "unused" })
+public class ImmutableHashSet extends HashSet {
+ /**
+ * Creates a new immutable hash set.
+ *
+ * @since v1-alpha2
+ */
+ public ImmutableHashSet() {}
+
+ /**
+ * Converts a {@link Set} into an {@link ImmutableHashSet}.
+ *
+ * @param set {@link Set} to convert
+ * @since v1-alpha2
+ */
+ public ImmutableHashSet(@NotNull Set set) {
+ super.addAll(set);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnsupportedOperationException always, array list is immutable
+ */
+ @Override
+ public boolean add(Object o) {
+ throw new UnsupportedOperationException("This method cannot be executed on an ImmutableHashSet");
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnsupportedOperationException always, array list is immutable
+ */
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException("This method cannot be executed on an ImmutableHashSet");
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnsupportedOperationException always, array list is immutable
+ */
+ @Override
+ public boolean addAll(@NotNull Collection collection) {
+ throw new UnsupportedOperationException("This method cannot be executed on an ImmutableHashSet");
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnsupportedOperationException always, array list is immutable
+ */
+ @Override
+ public boolean retainAll(@NotNull Collection collection) {
+ throw new UnsupportedOperationException("This method cannot be executed on an ImmutableHashSet");
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnsupportedOperationException always, array list is immutable
+ */
+ @Override
+ public boolean removeIf(Predicate filter) {
+ throw new UnsupportedOperationException("This method cannot be executed on an ImmutableHashSet");
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnsupportedOperationException always, array list is immutable
+ */
+ @Override
+ public void clear() {
+ throw new UnsupportedOperationException("This method cannot be executed on an ImmutableHashSet");
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnsupportedOperationException always, array list is immutable
+ */
+ @Override
+ public boolean removeAll(@NotNull Collection collection) {
+ throw new UnsupportedOperationException("This method cannot be executed on an ImmutableHashSet");
+ }
+}