modified: ../../src/de/dhbwstuttgart/typeinference/typeAlgo/TYPEStmt.java

Relationen auf verschiedene Numeric-Typen umgestellt
im equals Null abgefragt
This commit is contained in:
Martin Plümicke 2018-05-24 10:28:22 +02:00
parent 876ec6a4f6
commit f617ad8946
4 changed files with 449 additions and 79 deletions

View File

@ -272,10 +272,48 @@ public class TYPEStmt implements StatementVisitor{
binary.operation.equals(BinaryExpr.Operator.BIGGEREQUAL) ||
binary.operation.equals(BinaryExpr.Operator.BIGGERTHAN) ||
binary.operation.equals(BinaryExpr.Operator.LESSTHAN)){
constraintsSet.addUndConstraint(new Pair(binary.lexpr.getType(), number, PairOperator.SMALLERDOT));
constraintsSet.addUndConstraint(new Pair(binary.rexpr.getType(), number, PairOperator.SMALLERDOT));
//eingefuegt PL 2018-05-24
Set<Constraint> numericRelationConcatenation = new HashSet<>();
Constraint<Pair> numeric = new Constraint<>();
numeric.add(new Pair(binary.lexpr.getType(), bytee, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.rexpr.getType(), bytee, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT));
numericRelationConcatenation.add(numeric);
numeric = new Constraint<>();
numeric.add(new Pair(binary.lexpr.getType(), shortt, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.rexpr.getType(), shortt, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT));
numericRelationConcatenation.add(numeric);
numeric = new Constraint<>();
numeric.add(new Pair(binary.lexpr.getType(), integer, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.rexpr.getType(), integer, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT));
numericRelationConcatenation.add(numeric);
numeric = new Constraint<>();
numeric.add(new Pair(binary.lexpr.getType(), longg, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.rexpr.getType(), longg, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT));
numericRelationConcatenation.add(numeric);
numeric = new Constraint<>();
numeric.add(new Pair(binary.lexpr.getType(), floatt, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.rexpr.getType(), floatt, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT));
numericRelationConcatenation.add(numeric);
numeric = new Constraint<>();
numeric.add(new Pair(binary.lexpr.getType(), doublee, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.rexpr.getType(), doublee, PairOperator.SMALLERDOT));
numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT));
numericRelationConcatenation.add(numeric);
//***ACHTUNG: Moeglicherweise oder und und-Contraint falsch
constraintsSet.addOderConstraint(numericRelationConcatenation);
//***ACHTUNG: Moeglicherweise oder und und-Contraint falsch
//auskommentiert PL 2018-05-24
//constraintsSet.addUndConstraint(new Pair(binary.lexpr.getType(), number, PairOperator.SMALLERDOT));
//constraintsSet.addUndConstraint(new Pair(binary.rexpr.getType(), number, PairOperator.SMALLERDOT));
//Rückgabetyp ist Boolean
constraintsSet.addUndConstraint(new Pair(bool, binary.getType(), PairOperator.EQUALSDOT));
//constraintsSet.addUndConstraint(new Pair(bool, binary.getType(), PairOperator.EQUALSDOT));
}else{
throw new NotImplementedException();
}

View File

@ -149,6 +149,9 @@ public class UnifyPair {
UnifyPair other = (UnifyPair) obj;
if (isUndefinedPair()) {
if (other.getBasePair() != basePair || (other.getBasePair() == null && basePair == null)) {
return false;
}
if (!other.getBasePair().equals(basePair) ||
!other.getAllSubstitutions().equals(getAllSubstitutions())) {
return false;

View File

@ -2,7 +2,7 @@ import java.lang.Integer;
// wenn nur ein Import da steht,wird die Type von
// dem Literal 2 Number berechnet => Deswegen kann
// nicht auf den Stack geladen.
//import java.lang.Long;
import java.lang.Long;
public class While {
m(x) {

View File

@ -1,107 +1,436 @@
FC:\{java.lang.Number=Elem: Node(java.lang.Number)
Prec: [java.lang.Object, java.io.Serializable]
Desc: [java.lang.Integer]
Desc: [java.lang.Integer, java.lang.Long]
, java.lang.Object=Elem: Node(java.lang.Object)
Prec: [java.lang.Object]
Desc: [java.lang.Number, java.lang.Object, java.lang.Integer, java.lang.Comparable<CCN>, java.lang.Long, java.lang.Comparable<BPJ>, While, java.io.Serializable, java.lang.Comparable<BVY>]
, java.lang.Comparable=Elem: Node(java.lang.Comparable)
Prec: []
Desc: [java.lang.Integer]
, java.lang.Comparable<BWE>=Elem: Node(java.lang.Comparable<BWE>)
Prec: [java.lang.Object]
Desc: []
Desc: [java.lang.Integer, java.lang.Long]
, java.lang.Integer=Elem: Node(java.lang.Integer)
Prec: [java.lang.Number, java.lang.Object, java.lang.Comparable, java.io.Serializable]
Desc: []
, java.lang.Iterable<CWZ>=Elem: Node(java.lang.Iterable<CWZ>)
, java.lang.Comparable<CCN>=Elem: Node(java.lang.Comparable<CCN>)
Prec: [java.lang.Object]
Desc: []
, java.lang.Iterable<CFZ>=Elem: Node(java.lang.Iterable<CFZ>)
Prec: [java.lang.Object]
, java.lang.Long=Elem: Node(java.lang.Long)
Prec: [java.lang.Number, java.lang.Object, java.lang.Comparable, java.io.Serializable]
Desc: []
, java.util.Collection=Elem: Node(java.util.Collection)
Prec: []
Desc: [java.util.AbstractList<BXU>, java.util.Vector<BXU>, java.util.List<BXU>, java.util.AbstractCollection<BXU>]
, java.util.AbstractCollection<BXU>=Elem: Node(java.util.AbstractCollection<BXU>)
Prec: [java.lang.Object, java.util.Collection]
Desc: [java.util.AbstractList<BXU>, java.util.Vector<BXU>]
, java.util.AbstractList<BXU>=Elem: Node(java.util.AbstractList<BXU>)
Prec: [java.lang.Object, java.util.Collection, java.util.AbstractCollection<BXU>, java.util.List]
Desc: [java.util.Vector<BXU>]
, java.lang.Cloneable=Elem: Node(java.lang.Cloneable)
, java.lang.Comparable<BPJ>=Elem: Node(java.lang.Comparable<BPJ>)
Prec: [java.lang.Object]
Desc: [java.util.Vector<BXU>]
, java.lang.Comparable<BPP>=Elem: Node(java.lang.Comparable<BPP>)
Prec: [java.lang.Object]
Desc: []
, java.lang.Object=Elem: Node(java.lang.Object)
Prec: [java.lang.Object]
Desc: [java.lang.Number, java.lang.Comparable<BWE>, java.lang.Integer, java.lang.Iterable<CWZ>, java.lang.Iterable<CFZ>, java.util.AbstractCollection<BXU>, java.util.AbstractList<BXU>, java.lang.Cloneable, java.lang.Comparable<BPP>, Gen, java.lang.Object, java.util.Vector<BXU>, java.util.Collection<CMJ>, java.util.RandomAccess, java.util.Collection<CDW>, java.util.List<BXU>, java.io.Serializable, java.lang.Iterable<COM>, java.util.Collection<CUW>]
, java.util.Vector<BXU>=Elem: Node(java.util.Vector<BXU>)
Prec: [java.util.AbstractList<BXU>, java.lang.Cloneable, java.lang.Object, java.util.Collection, java.util.RandomAccess, java.io.Serializable, java.util.AbstractCollection<BXU>, java.util.List]
Desc: []
, Gen=Elem: Node(Gen)
Prec: [java.lang.Object]
Desc: []
, java.util.Collection<CMJ>=Elem: Node(java.util.Collection<CMJ>)
Prec: [java.lang.Object, java.lang.Iterable]
Desc: []
, java.util.RandomAccess=Elem: Node(java.util.RandomAccess)
Prec: [java.lang.Object]
Desc: [java.util.Vector<BXU>]
, java.util.List<BXU>=Elem: Node(java.util.List<BXU>)
Prec: [java.lang.Object, java.util.Collection]
Desc: []
, java.util.Collection<CDW>=Elem: Node(java.util.Collection<CDW>)
Prec: [java.lang.Object, java.lang.Iterable]
Desc: []
, java.io.Serializable=Elem: Node(java.io.Serializable)
Prec: [java.lang.Object]
Desc: [java.lang.Number, java.util.Vector<BXU>, java.lang.Integer]
Desc: [java.lang.Number, java.lang.Integer, java.lang.Long]
, java.lang.Iterable<COM>=Elem: Node(java.lang.Iterable<COM>)
, While=Elem: Node(While)
Prec: [java.lang.Object]
Desc: []
, java.lang.Iterable=Elem: Node(java.lang.Iterable)
Prec: []
Desc: [java.util.Collection<CMJ>, java.util.Collection<CDW>, java.util.Collection<CUW>]
, java.util.Collection<CUW>=Elem: Node(java.util.Collection<CUW>)
Prec: [java.lang.Object, java.lang.Iterable]
, java.lang.Comparable<BVY>=Elem: Node(java.lang.Comparable<BVY>)
Prec: [java.lang.Object]
Desc: []
, java.util.List=Elem: Node(java.util.List)
Prec: []
Desc: [java.util.AbstractList<BXU>, java.util.Vector<BXU>]
}
class Gen {
class While {
java.util.Vector<java.lang.Integer> m(java.util.Vector<java.lang.Integer> v)({
return (v)::java.util.Vector<java.lang.Integer>;
})::TPH K
TPH K m(TPH L x)({
while((x)::TPH L | 2.0)({
(x)::TPH L = (x)::TPH L | 1.0;
})::TPH Q;
return (x)::TPH L;
})::TPH S
Gen()({
While()({
super(());
})::TPH N
})::TPH V
}Unifikation: [(java.util.Vector<java.lang.Integer> <. java.util.Vector<java.lang.Integer>, )]
Unifikation: []
[]
}0 AA: []
1 Unifikation: [(O <. java.lang.Long, 0), (L <. java.lang.Float, 1), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Long, 0), (L <. java.lang.Integer, 1), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (N <. java.lang.Integer, 0)]
1 AA: []
2 Unifikation: [(O <. java.lang.Long, 0), (java.lang.Integer <. K, , -1), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (P <. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Long, ), (N <. java.lang.Integer, 0)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Long, )
BasePair; (L <. java.lang.Long, 1)
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1), (N <. java.lang.Integer, 0)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (P <. java.lang.Number, 1), (java.lang.Integer <. java.lang.Double, ), (P <. java.lang.Integer, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1), (N <. java.lang.Integer, 0)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Double, )
BasePair; (L <. java.lang.Double, 1)
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (N <. java.lang.Integer, 0), (P =. java.lang.String, 1)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (java.lang.Integer =. java.lang.String, ), (M =. java.lang.Boolean, 0), (java.lang.String <. java.lang.Integer, ), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1), (N <. java.lang.Integer, 0)]
1 UndefinedPairs; (java.lang.Integer =. java.lang.String, )
BasePair; (L =. java.lang.String, 1)
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (java.lang.Integer <. java.lang.Byte, ), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Byte, )
BasePair; (L <. java.lang.Byte, 1)
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1), (N <. java.lang.Integer, 0)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Float, ), (O <. java.lang.Float, 0), (P <. java.lang.Integer, 1), (P <. java.lang.Float, 1), (N <. java.lang.Integer, 0)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Float, )
BasePair; (L <. java.lang.Float, 1)
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
nextSet: [[(K =. java.lang.Object, -1)], [(K =. java.lang.Integer, -1)], [(K =. java.lang.Comparable, -1)], [(K =. java.lang.Number, -1)], [(K =. java.io.Serializable, -1)]]
2 AA: []
3 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
nextSet: [[(P =. java.lang.Integer, 1)], [(P =. ? extends java.lang.Integer, 1)]]
3 AA: []
4 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
nextSet: [[(O =. java.lang.Integer, 0)], [(O =. ? extends java.lang.Integer, 0)]]
4 AA: []
5 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
nextSet: [[(N =. java.lang.Integer, 0)], [(N =. ? extends java.lang.Integer, 0)]]
5 AA: []
6 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]
[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]
Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]]
Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]]
Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]]
Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]]
Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]]
Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]]
RES: [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]]
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Short, 0), (java.lang.Integer <. java.lang.Short, ), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Short, )
BasePair; (L <. java.lang.Short, 1)
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1)]
nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
1 AA: []
2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]
1 UndefinedPairs; (L <. java.lang.Short, 1)
BasePair; null
abhSubst: []
a: [(P =. ? extends java.lang.Long, 1)]
Durchschnitt: []
nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: []
Number erased Elements (undef): 1
Number erased Elements (undef): 1
Number of Backtracking: 1
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)]
1 UndefinedPairs; (L <. java.lang.Short, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1)]
1 UndefinedPairs; (L <. java.lang.Short, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Short, ), (N <. java.lang.Short, 0), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Short, )
BasePair; (L <. java.lang.Short, 1)
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Short, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (N <. java.lang.Long, 0)]
nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
1 AA: []
2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)]
2 AA: []
3 Unifikation: [(O <. java.lang.Long, 0), (M =. java.lang.Boolean, 0), (L =. java.lang.Long, 1), (java.lang.Long <. K, , -1), (java.lang.Long <. java.lang.Long, ), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)]
nextSet: [[(K =. java.lang.Long, -1)], [(K =. java.lang.Object, -1)], [(K =. java.lang.Comparable, -1)], [(K =. java.lang.Number, -1)], [(K =. java.io.Serializable, -1)]]
3 AA: []
4 Unifikation: [(O <. java.lang.Long, 0), (K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)]
nextSet: [[(O =. java.lang.Long, 0)], [(O =. ? extends java.lang.Long, 0)]]
4 AA: []
5 Unifikation: [(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)]
nextSet: [[(N =. java.lang.Long, 0)], [(N =. ? extends java.lang.Long, 0)]]
5 AA: []
6 Unifikation: [(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]
[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]
Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]]
Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]]
Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]]
Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]]
Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]]
Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]]
RES: [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]]
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1), (N <. java.lang.Long, 0)]
nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
1 AA: []
2 Unifikation: [(M =. java.lang.Boolean, 0), (? extends java.lang.Number <. java.lang.Double, ), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (? extends java.lang.Number <. L, , 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P =. ? extends java.lang.Number, 1), (N <. java.lang.Long, 0)]
1 UndefinedPairs; (java.lang.Number <. java.lang.Double, )
BasePair; (P <. java.lang.Double, 1)
1 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
abhSubst: [(P =. ? extends java.lang.Number, 1)]
a: [(P =. ? extends java.lang.Number, 1)]
Durchschnitt: [(P =. ? extends java.lang.Number, 1)]
nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
Number erased Elements (undef): 0
Number erased Elements (undef): 0
Number of Backtracking: 1
2 AA: []
3 Unifikation: [(P =. java.lang.Number, 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (java.lang.Number <. java.lang.Double, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (java.lang.Number <. L, , 1), (N <. java.lang.Long, 0)]
2 UndefinedPairs; (java.lang.Number <. java.lang.Double, )
BasePair; (P <. java.lang.Double, 1)
2 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
abhSubst: [(P =. java.lang.Number, 1)]
a: [(P =. java.lang.Number, 1)]
Durchschnitt: [(P =. java.lang.Number, 1)]
nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: [[(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
Number erased Elements (undef): 0
Number erased Elements (undef): 0
Number of Backtracking: 2
3 AA: []
4 Unifikation: [(M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (? extends java.lang.Integer <. java.lang.Double, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (? extends java.lang.Integer <. L, , 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P =. ? extends java.lang.Integer, 1), (N <. java.lang.Long, 0)]
3 UndefinedPairs; (java.lang.Integer <. java.lang.Double, )
BasePair; (P <. java.lang.Double, 1)
abhSubst: [(P =. ? extends java.lang.Integer, 1)]
a: [(P =. ? extends java.lang.Integer, 1)]
Durchschnitt: [(P =. ? extends java.lang.Integer, 1)]
nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: [[(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
Number erased Elements (undef): 0
Number erased Elements (undef): 0
Number of Backtracking: 3
4 AA: []
5 Unifikation: [(java.lang.Integer <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P =. java.lang.Integer, 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (java.lang.Integer <. java.lang.Double, ), (N <. java.lang.Long, 0)]
4 UndefinedPairs; (java.lang.Integer <. java.lang.Double, )
BasePair; (P <. java.lang.Double, 1)
abhSubst: [(P =. java.lang.Integer, 1)]
a: [(P =. java.lang.Integer, 1)]
Durchschnitt: [(P =. java.lang.Integer, 1)]
nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
Number erased Elements (undef): 0
Number erased Elements (undef): 0
Number of Backtracking: 4
5 AA: []
6 Unifikation: [(? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (? extends java.lang.Long <. java.lang.Double, ), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)]
5 UndefinedPairs; (java.lang.Long <. java.lang.Double, )
BasePair; (P <. java.lang.Double, 1)
5 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
abhSubst: [(P =. ? extends java.lang.Long, 1)]
a: [(P =. ? extends java.lang.Long, 1)]
Durchschnitt: [(P =. ? extends java.lang.Long, 1)]
nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: [[(P =. java.lang.Long, 1)]]
Number erased Elements (undef): 0
Number erased Elements (undef): 0
Number of Backtracking: 5
6 AA: []
7 Unifikation: [(java.lang.Long <. java.lang.Double, ), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P =. java.lang.Long, 1), (java.lang.Long <. L, , 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (N <. java.lang.Long, 0)]
6 UndefinedPairs; (java.lang.Long <. java.lang.Double, )
BasePair; (P <. java.lang.Double, 1)
6 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
abhSubst: [(P =. java.lang.Long, 1)]
a: [(P =. java.lang.Long, 1)]
Durchschnitt: [(P =. java.lang.Long, 1)]
nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: []
Number erased Elements (undef): 0
Number erased Elements (undef): 0
Number of Backtracking: 6
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (O =. java.lang.String, 0), (N <. java.lang.Long, 0), (P =. java.lang.String, 1)]
1 AA: []
2 Unifikation: [(M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Long, 1), (java.lang.String <. java.lang.Long, ), (java.lang.Long <. K, , -1), (java.lang.Long =. java.lang.String, ), (O =. java.lang.String, 0), (P =. java.lang.String, 1), (N <. java.lang.Long, 0)]
1 UndefinedPairs; (java.lang.String <. java.lang.Long, )
BasePair; (P <. java.lang.Long, 1)
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Long, 0)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (L <. java.lang.Long, 1), (P <. java.lang.Float, 1), (N <. java.lang.Long, 0)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (L <. java.lang.Long, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Long, 0)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Long, ), (N <. java.lang.Long, 0)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Long, )
BasePair; (L <. java.lang.Long, 1)
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Long, 0)]
1 UndefinedPairs; (L <. java.lang.Short, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1)]
nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
1 AA: []
2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (N <. java.lang.Byte, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
abhSubst: []
a: [(P =. ? extends java.lang.Long, 1)]
Durchschnitt: []
nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: []
Number erased Elements (undef): 1
Number erased Elements (undef): 1
Number of Backtracking: 1
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Integer <. java.lang.Byte, ), (N <. java.lang.Byte, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Byte, )
BasePair; (L <. java.lang.Byte, 1)
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (L <. java.lang.Long, 1)]
nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
1 AA: []
2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (N <. java.lang.Double, 0), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]
1 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
abhSubst: []
a: [(P =. ? extends java.lang.Long, 1)]
Durchschnitt: []
nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]]
nextSetasList: []
Number erased Elements (undef): 1
Number erased Elements (undef): 1
Number of Backtracking: 1
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. java.lang.Number, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)]
1 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (L =. java.lang.String, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O =. java.lang.String, 0), (P =. java.lang.String, 1)]
1 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Byte, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)]
1 UndefinedPairs; (L <. java.lang.Float, 1)
BasePair; null
RES: []
0 AA: []
1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)]
1 AA: []
2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (N <. java.lang.Double, 0), (O <. java.lang.Integer, 0), (java.lang.Integer <. java.lang.Double, ), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (java.lang.Integer <. java.lang.Double, )
BasePair; (L <. java.lang.Double, 1)
RES: []
0 AA: []
1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (P <. java.lang.Integer, 1)]
1 UndefinedPairs; (L <. java.lang.Double, 1)
BasePair; null
RES: []