/* Vector<b> Vector<? extends Vector<a>> */
/* Erg:
[[(TPH a = Vector< Integer >), (TPH b = ? extends Matrix)],
 [(TPH a = ? extends Vector< Integer >), (TPH b = ? extends Matrix)],
 [(TPH a = ? extends Vector< ? extends Integer >), (TPH b = ? extends Matrix)],
 [(TPH a = ? extends Vector< ? extends Number >), (TPH b = ? extends Matrix)],
 [(TPH a = ? extends Vector< ? extends Object >), (TPH b = ? extends Matrix)],
 [(TPH a = ? extends Vector< ? super Integer >), (TPH b = ? extends Matrix)],
 [(TPH a = ? extends Object), (TPH b = ? extends Matrix)],
 [(TPH a = ? super Vector< Integer >), (TPH b = ? extends Matrix)],
 [(TPH a = Vector< Integer >), (TPH b = Matrix)],
 [(TPH a = ? extends Vector< Integer >), (TPH b = Matrix)],
 [(TPH a = ? extends Vector< ? extends Integer >), (TPH b = Matrix)],
 [(TPH a = ? extends Vector< ? extends Number >), (TPH b = Matrix)],
 [(TPH a = ? extends Vector< ? extends Object >), (TPH b = Matrix)],
 [(TPH a = ? extends Vector< ? super Integer >), (TPH b = Matrix)],
 [(TPH a = ? extends Object), (TPH b = Matrix)],
 [(TPH a = ? super Vector< Integer >), (TPH b = Matrix)],
 [(TPH b = ? extends Vector< TPH a >)],
 [(TPH b = Vector< TPH a >)]]
 */
/* FUNKTIONIERT !!! */


/* Fehler bei b <? ? ext Vec<a>: 
   Reflexivitaet fehlt: b = Vec<a> bzw. b = ? ext Vec<a> wird nicht berechnet
   isRXSimilarRY ist wahrscheinlich die falsche Methode, hier wird geprueft,
   ob RY instance von RFC ist. Das ist bei RY = Vec<a> und RFC = Vec<Vec<Int>>
   nicht der Fall. Moeglicherweise statt isRXSimilarRY match benutzen ???
   
   PL 07-07-04: isRXSimilarRY scheint jetzt zu funktionieren.
   Reflexivitaet fehlt noch
 */

/* Fehler behoben. Korrekt? */


 /* Vector<? super Vector<a>> Vector<b>  */

  /* FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */
  
/* Vector<b> Vector<? super Vector<a>> */
/* Test der 3. Menge. FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */ 

/* Vector<a> Vector<Integer> */
/* Test der 4. Menge. FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */

Vector<a> Vector<? extends Vector<? extends Vector<b>>> 
/* funktioniert. Ergebnis:
[[(TPH b = Integer), (TPH a = ? extends Matrix)],
 [(TPH b = Integer), (TPH a = Matrix)],
 [(TPH b = ? extends Integer), (TPH a = ? extends Matrix)],
 [(TPH b = ? extends Integer), (TPH a = Matrix)],
 [(TPH b = ? extends Number), (TPH a = ? extends Matrix)],
 [(TPH b = ? extends Number), (TPH a = Matrix)],
 [(TPH b = ? extends Object), (TPH a = ? extends Matrix)],
 [(TPH b = ? extends Object), (TPH a = Matrix)],
 [(TPH b = ? super Integer), (TPH a = ? extends Matrix)],
 [(TPH b = ? super Integer), (TPH a = Matrix)],
 [(TPH a = ? extends Vector< ? extends Vector< TPH b > >)],
 [(TPH a = Vector< ? extends Vector< TPH b > >)],
 [(TPH a = ? extends Vector< Vector< TPH b > >)],
 [(TPH a = Vector< Vector< TPH b > >)]] */
 
 
class Number {}
class Integer extends Number {}

class Vector<a> { }

class Matrix extends Vector<Vector<Integer>> { }