/* VecPair Menge extends Pair> */
/* Funktioniert !!!
*/
/* VecPair Menge> */
/* Funktioniert !!!
*/
/* VecPair Menge> */
/* Funktioniert !!! */
/* Menge> Menge */
/* Funktioniert !!! nochmals ueberpruefen 07-07-29 */
/* VecPair extends Number, Integer> Menge> */
/* Funktioniert kein Unifier!!! */
/* VecPair extends Number, Integer> Menge extends Pair extends Number,Integer>> */
/* Funktioniert!!! */
/* Menge Menge extends Menge>> */
/* funktioniert */
/* Erg.:
[[(TPH a = TPH A), (TPH c = Integer), (TPH b = ? extends VecPair< TPH A, TPH B >)],
[(TPH a = TPH A), (TPH c = Integer), (TPH b = VecPair< TPH A, TPH B >)],
[(TPH b = ? extends Menge< Pair< TPH a, TPH c > >)],
[(TPH b = Menge< Pair< TPH a, TPH c > >)]]
*/
/* Menge Menge extends Menge>> */
/* Erg:
[[(TPH c = Integer), (TPH b = VecPair< Number, TPH B >)],
[(TPH c = Integer), (TPH b = ? extends VecPair< Number, TPH B >)],
[(TPH b = Menge< Pair< Number, TPH c > >)],
[(TPH b = ? extends Menge< Pair< Number, TPH c > >)]]
*/
/* Menge Menge extends Menge> */
/* Erg.:
[[(TPH a = Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH B >)],
[(TPH a = Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH B >)],
[(TPH a = ? extends Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH C >)],
[(TPH a = ? extends Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH C >)],
[(TPH a = ? extends Pair< TPH A, ? extends Integer >), (TPH b = ? extends VecPair< TPH A, TPH D >)],
[(TPH a = ? extends Pair< TPH A, ? extends Integer >), (TPH b = VecPair< TPH A, TPH D >)],
[(TPH a = ? extends Pair< TPH A, ? extends Number >), (TPH b = ? extends VecPair< TPH A, TPH E >)],
[(TPH a = ? extends Pair< TPH A, ? extends Number >), (TPH b = VecPair< TPH A, TPH E >)],
[(TPH a = ? extends Pair< TPH A, ? extends Object >), (TPH b = ? extends VecPair< TPH A, TPH F >)],
[(TPH a = ? extends Pair< TPH A, ? extends Object >), (TPH b = VecPair< TPH A, TPH F >)],
[(TPH a = ? extends Pair< TPH A, ? super Integer >), (TPH b = ? extends VecPair< TPH A, TPH G >)],
[(TPH a = ? extends Pair< TPH A, ? super Integer >), (TPH b = VecPair< TPH A, TPH G >)],
[(TPH a = ? extends Object), (TPH b = ? extends VecPair< TPH A, TPH H >)],
[(TPH a = ? extends Object), (TPH b = VecPair< TPH A, TPH H >)],
[(TPH a = ? super Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH I >)],
[(TPH a = ? super Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH I >)],
[(TPH b = ? extends Menge< TPH a >)],
[(TPH b = Menge< TPH a >)]]
*/
/* Menge> Menge extends Menge> */
/* funktioniert */
/* Erg.
[[(TPH a = Pair< Number, Integer >)],
[(TPH a = ? extends Pair< Number, Integer >)],
[(TPH a = ? extends Pair< Number, ? extends Integer >)],
[(TPH a = ? extends Pair< Number, ? extends Number >)],
[(TPH a = ? extends Pair< Number, ? extends Object >)],
[(TPH a = ? extends Pair< Number, ? super Integer >)],
[(TPH a = ? extends Pair< ? extends Number, Integer >)],
[(TPH a = ? extends Pair< ? extends Number, ? extends Integer >)],
[(TPH a = ? extends Pair< ? extends Number, ? extends Number >)],
[(TPH a = ? extends Pair< ? extends Number, ? extends Object >)],
[(TPH a = ? extends Pair< ? extends Number, ? super Integer >)],
[(TPH a = ? extends Pair< ? extends Object, Integer >)],
[(TPH a = ? extends Pair< ? extends Object, ? extends Integer >)],
[(TPH a = ? extends Pair< ? extends Object, ? extends Number >)],
[(TPH a = ? extends Pair< ? extends Object, ? extends Object >)],
[(TPH a = ? extends Pair< ? extends Object, ? super Integer >)],
[(TPH a = ? extends Pair< ? super Number, Integer >)],
[(TPH a = ? extends Pair< ? super Number, ? extends Integer >)],
[(TPH a = ? extends Pair< ? super Number, ? extends Number >)],
[(TPH a = ? extends Pair< ? super Number, ? extends Object >)],
[(TPH a = ? extends Pair< ? super Number, ? super Integer >)],
[(TPH a = ? extends Pair< ? super Integer, Integer >)],
[(TPH a = ? extends Pair< ? super Integer, ? extends Integer >)],
[(TPH a = ? extends Pair< ? super Integer, ? extends Number >)],
[(TPH a = ? extends Pair< ? super Integer, ? extends Object >)],
[(TPH a = ? extends Pair< ? super Integer, ? super Integer >)],
[(TPH a = ? extends Object)],
[(TPH a = ? super Pair< Number, Integer >)]]
*/
/* Menge Menge extends Menge extends Pair>> */
/* Erg. stimmt
[[[(TPH c = Integer), (TPH b = ? extends VecPair< Number, TPH B >)],
[(TPH c = Integer), (TPH b = VecPair< Number, TPH B >)],
[(TPH c = ? extends Integer), (TPH b = ? extends VecPair< Number, TPH C >)],
[(TPH c = ? extends Integer), (TPH b = VecPair< Number, TPH C >)],
[(TPH c = ? extends Number), (TPH b = ? extends VecPair< Number, TPH D >)],
[(TPH c = ? extends Number), (TPH b = VecPair< Number, TPH D >)],
[(TPH c = ? extends Object), (TPH b = ? extends VecPair< Number, TPH E >)],
[(TPH c = ? extends Object), (TPH b = VecPair< Number, TPH E >)],
[(TPH c = ? super Integer), (TPH b = ? extends VecPair< Number, TPH F >)],
[(TPH c = ? super Integer), (TPH b = VecPair< Number, TPH F >)],
[(TPH b = ? extends Menge< ? extends Pair< Number, TPH c > >)],
[(TPH b = Menge< ? extends Pair< Number, TPH c > >)],
[(TPH b = ? extends Menge< Pair< Number, TPH c > >)],
[(TPH b = Menge< Pair< Number, TPH c > >)]]
*/
class Number {}
class Integer extends Number {}
class Menge { }
class Pair { }
class VecPair extends Menge> { }