diff --git a/src/Libero/ruleset.xml b/src/Libero/ruleset.xml
index b05d421..a834cfd 100644
--- a/src/Libero/ruleset.xml
+++ b/src/Libero/ruleset.xml
@@ -101,6 +101,7 @@
+
diff --git a/tests/cases/classes/method-generics b/tests/cases/classes/method-generics
new file mode 100644
index 0000000..2ae7ed7
--- /dev/null
+++ b/tests/cases/classes/method-generics
@@ -0,0 +1,91 @@
+---DESCRIPTION---
+Generic types must be used
+---FILENAME---
+Foo.php
+---CONTENTS---
+ */
+ public $baz;
+
+ /**
+ * @param string[] $quux
+ * @return string[]
+ */
+ public function qux($quux)
+ {
+ }
+
+ /**
+ * @param iterable|string[] $corge
+ * @return iterable|string[]
+ */
+ public function quuz($corge)
+ {
+ }
+
+ /**
+ * @param ArrayObject $garply
+ * @return ArrayObject
+ */
+ public function grault($garply)
+ {
+ }
+}
+
+---FIXED---
+ */
+ public $foo;
+
+ /** @var iterable */
+ public $bar;
+
+ /** @var ArrayObject */
+ public $baz;
+
+ /**
+ * @param array $quux
+ * @return array
+ */
+ public function qux($quux)
+ {
+ }
+
+ /**
+ * @param iterable $corge
+ * @return iterable
+ */
+ public function quuz($corge)
+ {
+ }
+
+ /**
+ * @param ArrayObject $garply
+ * @return ArrayObject
+ */
+ public function grault($garply)
+ {
+ }
+}
+
+---
diff --git a/tests/cases/functions/generics b/tests/cases/functions/generics
new file mode 100644
index 0000000..8039939
--- /dev/null
+++ b/tests/cases/functions/generics
@@ -0,0 +1,63 @@
+---DESCRIPTION---
+Generic types must be used
+---FILENAME---
+Foo.php
+---CONTENTS---
+ $quuz
+ * @return ArrayObject
+ */
+function quux($quuz)
+{
+}
+
+---FIXED---
+ $bar
+ * @return array
+ */
+function foo($bar)
+{
+}
+
+/**
+ * @param iterable $qux
+ * @return iterable
+ */
+function baz($qux)
+{
+}
+
+/**
+ * @param ArrayObject $quuz
+ * @return ArrayObject
+ */
+function quux($quuz)
+{
+}
+
+---
diff --git a/tests/cases/interfaces/method-generics b/tests/cases/interfaces/method-generics
new file mode 100644
index 0000000..f2b0c78
--- /dev/null
+++ b/tests/cases/interfaces/method-generics
@@ -0,0 +1,61 @@
+---DESCRIPTION---
+Generic types must be used
+---FILENAME---
+Foo.php
+---CONTENTS---
+ $corge
+ * @return ArrayObject
+ */
+ public function quuz($corge);
+}
+
+---FIXED---
+ $baz
+ * @return array
+ */
+ public function bar($baz);
+
+ /**
+ * @param iterable $quux
+ * @return iterable
+ */
+ public function qux($quux);
+
+ /**
+ * @param ArrayObject $corge
+ * @return ArrayObject
+ */
+ public function quuz($corge);
+}
+
+---
diff --git a/tests/cases/trait/method-generics b/tests/cases/trait/method-generics
new file mode 100644
index 0000000..90d025d
--- /dev/null
+++ b/tests/cases/trait/method-generics
@@ -0,0 +1,87 @@
+---DESCRIPTION---
+Generic types must be used
+---FILENAME---
+Foo.php
+---CONTENTS---
+ */
+ public $baz;
+
+ /**
+ * @param string[] $quux
+ * @return string[]
+ */
+ public function qux($quux)
+ {
+ }
+
+ /**
+ * @param iterable|string[] $corge
+ * @return iterable|string[]
+ */
+ abstract public function quuz($corge);
+
+ /**
+ * @param ArrayObject $garply
+ * @return ArrayObject
+ */
+ public function grault($garply)
+ {
+ }
+}
+
+---FIXED---
+ */
+ public $foo;
+
+ /** @var iterable */
+ public $bar;
+
+ /** @var ArrayObject */
+ public $baz;
+
+ /**
+ * @param array $quux
+ * @return array
+ */
+ public function qux($quux)
+ {
+ }
+
+ /**
+ * @param iterable $corge
+ * @return iterable
+ */
+ abstract public function quuz($corge);
+
+ /**
+ * @param ArrayObject $garply
+ * @return ArrayObject
+ */
+ public function grault($garply)
+ {
+ }
+}
+
+---