final class org.apache.axiom.weaver.ImplementationNode extends java.lang.Object
{
private static final com.github.veithen.jrel.association.ManyToManyAssociation PARENT;
private static final com.github.veithen.jrel.association.ManyToManyAssociation MIXIN;
private static final com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR;
private static final com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR_OR_SELF;
private static final com.github.veithen.jrel.composition.CompositionRelation TRANSITIVE_MIXIN;
private final com.github.veithen.jrel.association.MutableReference weaver;
private final int id;
private final org.apache.axiom.weaver.InterfaceNode primaryInterface;
private final com.github.veithen.jrel.association.MutableReferences parents;
private final com.github.veithen.jrel.association.MutableReferences children;
private final com.github.veithen.jrel.association.MutableReferences ifaces;
private final com.github.veithen.jrel.association.MutableReferences mixins;
private final com.github.veithen.jrel.References ancestors;
private final com.github.veithen.jrel.References ancestorsOrSelf;
private final com.github.veithen.jrel.References descendantsOrSelf;
private final com.github.veithen.jrel.References transitiveMixins;
private final java.util.function.Supplier className;
private boolean requireImplementation;
void <init>(int, java.util.Set, org.apache.axiom.weaver.InterfaceNode, java.util.Set, java.util.function.Supplier)
{
com.github.veithen.jrel.association.ManyToOneAssociation v;
java.util.function.Supplier v;
int v;
org.apache.axiom.weaver.ImplementationNode v;
org.apache.axiom.weaver.InterfaceNode v;
com.github.veithen.jrel.ReferenceHolder v, v, v, v, v, v, v, v, v;
com.github.veithen.jrel.association.ManyToManyAssociation v, v, v, v;
java.util.Set v, v;
com.github.veithen.jrel.AbstractBinaryRelation v, v;
com.github.veithen.jrel.transitive.TransitiveClosure v, v, v;
com.github.veithen.jrel.composition.CompositionRelation v;
com.github.veithen.jrel.association.MutableReferences v, v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v := @parameter: int;
v := @parameter: java.util.Set;
v := @parameter: org.apache.axiom.weaver.InterfaceNode;
v := @parameter: java.util.Set;
v := @parameter: java.util.function.Supplier;
specialinvoke v.<java.lang.Object: void <init>()>();
v = <org.apache.axiom.weaver.Relations: com.github.veithen.jrel.association.ManyToOneAssociation WEAVER>;
v = virtualinvoke v.<com.github.veithen.jrel.association.ManyToOneAssociation: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReference weaver> = v;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation PARENT>;
v = virtualinvoke v.<com.github.veithen.jrel.association.ManyToManyAssociation: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents> = v;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation PARENT>;
v = virtualinvoke v.<com.github.veithen.jrel.association.ManyToManyAssociation: com.github.veithen.jrel.AbstractBinaryRelation getConverse()>();
v = virtualinvoke v.<com.github.veithen.jrel.association.ManyToManyAssociation: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children> = v;
v = <org.apache.axiom.weaver.Relations: com.github.veithen.jrel.association.ManyToManyAssociation IMPLEMENTS>;
v = virtualinvoke v.<com.github.veithen.jrel.association.ManyToManyAssociation: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces> = v;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation MIXIN>;
v = virtualinvoke v.<com.github.veithen.jrel.association.ManyToManyAssociation: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins> = v;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR>;
v = virtualinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References ancestors> = v;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR_OR_SELF>;
v = virtualinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References ancestorsOrSelf> = v;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR_OR_SELF>;
v = virtualinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: com.github.veithen.jrel.AbstractBinaryRelation getConverse()>();
v = virtualinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References descendantsOrSelf> = v;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.composition.CompositionRelation TRANSITIVE_MIXIN>;
v = virtualinvoke v.<com.github.veithen.jrel.composition.CompositionRelation: com.github.veithen.jrel.ReferenceHolder newReferenceHolder(java.lang.Object)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References transitiveMixins> = v;
v.<org.apache.axiom.weaver.ImplementationNode: int id> = v;
v.<org.apache.axiom.weaver.ImplementationNode: org.apache.axiom.weaver.InterfaceNode primaryInterface> = v;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean add(java.lang.Object)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v.<org.apache.axiom.weaver.ImplementationNode: java.util.function.Supplier className> = v;
return;
}
org.apache.axiom.weaver.InterfaceNode getPrimaryInterface()
{
org.apache.axiom.weaver.ImplementationNode v;
org.apache.axiom.weaver.InterfaceNode v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = v.<org.apache.axiom.weaver.ImplementationNode: org.apache.axiom.weaver.InterfaceNode primaryInterface>;
return v;
}
void requireImplementation()
{
org.apache.axiom.weaver.ImplementationNode v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation> = 1;
return;
}
java.lang.String getClassName()
{
java.lang.Object v;
java.util.function.Supplier v;
org.apache.axiom.weaver.ImplementationNode v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = v.<org.apache.axiom.weaver.ImplementationNode: java.util.function.Supplier className>;
v = interfaceinvoke v.<java.util.function.Supplier: java.lang.Object get()>();
return v;
}
java.util.Set getRequiredDescendantsOrSelf()
{
com.github.veithen.jrel.References v;
java.util.Iterator v;
com.github.veithen.jrel.collection.LinkedIdentityHashSet v;
com.github.veithen.jrel.collection.ListenableSet v;
java.lang.Object v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = new com.github.veithen.jrel.collection.LinkedIdentityHashSet;
specialinvoke v.<com.github.veithen.jrel.collection.LinkedIdentityHashSet: void <init>()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References descendantsOrSelf>;
v = virtualinvoke v.<com.github.veithen.jrel.References: com.github.veithen.jrel.collection.ListenableSet asSet()>();
v = interfaceinvoke v.<com.github.veithen.jrel.collection.ListenableSet: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation>;
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
private int getWeight()
{
com.github.veithen.jrel.References v;
java.util.Iterator v;
int v, v;
java.lang.Object v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = 0;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References transitiveMixins>;
v = virtualinvoke v.<com.github.veithen.jrel.References: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.axiom.weaver.MixinNode: int getWeight()>();
v = v + v;
goto label;
label:
return v;
}
private java.util.Set getInterfaces()
{
java.util.LinkedHashSet v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v, v, v, v, v;
java.util.Iterator v, v, v;
java.lang.Class v;
java.lang.Object v, v, v;
com.github.veithen.jrel.association.MutableReferences v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.axiom.weaver.InterfaceNode: java.lang.Class getInterface()>();
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
goto label;
label:
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
void dump(java.lang.StringBuilder, boolean)
{
int v, v, v, v, v, v;
java.lang.String v, v, v, v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v, v, v, v, v;
java.util.Iterator v, v, v;
java.util.Set v;
java.lang.Object v, v, v;
java.lang.StringBuilder v;
com.github.veithen.jrel.association.MutableReferences v, v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v := @parameter: java.lang.StringBuilder;
v := @parameter: boolean;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("  n");
v = v.<org.apache.axiom.weaver.ImplementationNode: int id>;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" [label=<");
if v == 0 goto label;
v = virtualinvoke v.<org.apache.axiom.weaver.ImplementationNode: java.lang.String getClassName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("<b>");
v = virtualinvoke v.<java.lang.String: int lastIndexOf(int)>(47);
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("</b><br/>");
label:
v = specialinvoke v.<org.apache.axiom.weaver.ImplementationNode: java.util.Set getInterfaces()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("<i>");
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("</i><br/>");
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.axiom.weaver.MixinNode: java.lang.String getName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("<br/>");
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("[w:");
v = specialinvoke v.<org.apache.axiom.weaver.ImplementationNode: int getWeight()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]>");
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean isEmpty()>();
if v != 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", penwidth=2");
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation>;
if v == 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", style=filled");
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("];\n");
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("  n");
v = v.<org.apache.axiom.weaver.ImplementationNode: int id>;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" -> n");
v = v.<org.apache.axiom.weaver.ImplementationNode: int id>;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(";\n");
goto label;
label:
return;
}
static void merge(java.util.Set)
{
com.github.veithen.jrel.association.MutableReference v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v, v;
java.util.Iterator v, v;
java.util.Set v;
java.lang.Object v, v;
com.github.veithen.jrel.association.MutableReferences v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @parameter: java.util.Set;
v = null;
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v != null goto label;
v = v;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation>;
if v == 0 goto label;
v = v;
label:
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean removeAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean removeAll(java.util.Collection)>(v);
if v == v goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReference weaver>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReference: void set(java.lang.Object)>(null);
goto label;
label:
return;
}
void removeIfNotRequired()
{
com.github.veithen.jrel.association.MutableReference v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v, v;
java.util.Iterator v;
java.lang.Object v;
com.github.veithen.jrel.association.MutableReferences v, v, v, v, v, v, v, v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation>;
if v != 0 goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean isEmpty()>();
if v == 0 goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReference weaver>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReference: void set(java.lang.Object)>(null);
label:
return;
}
void reduce()
{
com.github.veithen.jrel.transitive.TransitiveClosure v;
org.apache.axiom.weaver.ImplementationNode v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR>;
virtualinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: void reduce(java.lang.Object)>(v);
return;
}
boolean compact()
{
com.github.veithen.jrel.association.MutableReference v;
com.github.veithen.jrel.References v;
int v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v, v, v, v, v;
java.util.Iterator v, v, v;
com.github.veithen.jrel.transitive.TransitiveClosure v;
java.lang.Object v, v, v;
com.github.veithen.jrel.association.MutableReferences v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR>;
virtualinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: void reduce(java.lang.Object)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation>;
if v != 0 goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: int size()>();
if v <= 1 goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean isEmpty()>();
if v == 0 goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v == v goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References ancestors>;
v = virtualinvoke v.<com.github.veithen.jrel.References: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: void clear()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReference weaver>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReference: void set(java.lang.Object)>(null);
return 1;
label:
return 0;
}
void ensureSingleParent()
{
com.github.veithen.jrel.References v, v;
int v, v, v, v;
org.apache.axiom.weaver.ImplementationNode v, v;
boolean v, v;
java.util.Iterator v, v;
com.github.veithen.jrel.collection.ListenableSet v, v;
java.lang.Object v, v;
com.github.veithen.jrel.association.MutableReferences v, v, v, v, v, v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: int size()>();
if v > 1 goto label;
return;
label:
v = (int) -1;
v = v;
v = null;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.apache.axiom.weaver.ImplementationNode: int getWeight()>();
if v <= v goto label;
v = v;
v = v;
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v == v goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References transitiveMixins>;
v = virtualinvoke v.<com.github.veithen.jrel.References: com.github.veithen.jrel.collection.ListenableSet asSet()>();
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean addAll(java.util.Collection)>(v);
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.References transitiveMixins>;
v = virtualinvoke v.<com.github.veithen.jrel.References: com.github.veithen.jrel.collection.ListenableSet asSet()>();
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean removeAll(java.util.Collection)>(v);
return;
}
boolean promoteCommonMixins()
{
com.github.veithen.jrel.collection.LinkedIdentityHashSet v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v, v, v, v, v, v;
java.util.Iterator v, v, v;
org.apache.axiom.weaver.InterfaceNode v, v;
java.lang.Object v, v, v;
com.github.veithen.jrel.association.MutableReferences v, v, v, v, v, v, v, v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation>;
if v != 0 goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean isEmpty()>();
if v == 0 goto label;
label:
return 0;
label:
v = new com.github.veithen.jrel.collection.LinkedIdentityHashSet;
specialinvoke v.<com.github.veithen.jrel.collection.LinkedIdentityHashSet: void <init>()>();
v = 1;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v == 0 goto label;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
v = 0;
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
interfaceinvoke v.<java.util.Set: boolean retainAll(java.util.Collection)>(v);
goto label;
label:
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v == 0 goto label;
return 0;
label:
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean add(java.lang.Object)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
v = virtualinvoke v.<org.apache.axiom.weaver.MixinNode: org.apache.axiom.weaver.InterfaceNode getTargetInterface()>();
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean add(java.lang.Object)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean remove(java.lang.Object)>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences ifaces>;
v = virtualinvoke v.<org.apache.axiom.weaver.MixinNode: org.apache.axiom.weaver.InterfaceNode getTargetInterface()>();
virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean remove(java.lang.Object)>(v);
goto label;
label:
return 1;
}
public java.lang.String toString()
{
java.util.Iterator v;
java.util.Set v;
java.lang.Object v;
java.lang.StringBuilder v;
java.lang.String v, v;
org.apache.axiom.weaver.ImplementationNode v;
boolean v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>("<");
v = 1;
v = specialinvoke v.<org.apache.axiom.weaver.ImplementationNode: java.util.Set getInterfaces()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v == 0 goto label;
v = 0;
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(",");
label:
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(">");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
java.util.List toClassDefinitions(org.apache.axiom.weaver.mixin.WeavingContext)
{
org.apache.axiom.weaver.WeaverException v;
org.apache.axiom.weaver.mixin.Mixin[] v;
boolean v, v, v, v, v, v;
org.apache.axiom.weaver.TargetContextImpl v;
org.apache.axiom.weaver.InterfaceNode v;
org.apache.axiom.weaver.mixin.Mixin v;
java.util.Set v;
java.util.List v;
com.github.veithen.jrel.association.MutableReferences v, v, v, v;
java.lang.Object[] v, v;
org.apache.axiom.weaver.ImplementationClassDefinition v;
java.lang.String[] v;
java.util.ArrayList v, v, v;
short v, v;
int v, v, v, v, v;
java.lang.String v, v, v;
org.apache.axiom.weaver.ImplementationNode v;
java.util.Iterator v, v, v;
org.apache.axiom.weaver.mixin.WeavingContext v;
java.lang.Object v, v, v;
v := @this: org.apache.axiom.weaver.ImplementationNode;
v := @parameter: org.apache.axiom.weaver.mixin.WeavingContext;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = new org.apache.axiom.weaver.TargetContextImpl;
v = virtualinvoke v.<org.apache.axiom.weaver.ImplementationNode: java.lang.String getClassName()>();
specialinvoke v.<org.apache.axiom.weaver.TargetContextImpl: void <init>(org.apache.axiom.weaver.mixin.WeavingContext,java.lang.String)>(v, v);
v = 0;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences mixins>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.axiom.weaver.MixinNode: org.apache.axiom.weaver.mixin.Mixin getMixin()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.axiom.weaver.mixin.Mixin: int getBytecodeVersion()>();
goto label;
label:
v = virtualinvoke v.<org.apache.axiom.weaver.mixin.Mixin: int getBytecodeVersion()>();
if v == v goto label;
v = new org.apache.axiom.weaver.WeaverException;
specialinvoke v.<org.apache.axiom.weaver.WeaverException: void <init>(java.lang.String)>("Inconsistent bytecode versions");
throw v;
label:
v = virtualinvoke v.<org.apache.axiom.weaver.mixin.Mixin: java.util.List createInnerClassDefinitions(org.apache.axiom.weaver.mixin.TargetContext)>(v);
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
if v != 0 goto label;
v = 51;
label:
v = 1;
v = v.<org.apache.axiom.weaver.ImplementationNode: boolean requireImplementation>;
if v != 0 goto label;
v = 1025;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences children>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean isEmpty()>();
if v == 0 goto label;
v = v | 16;
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = specialinvoke v.<org.apache.axiom.weaver.ImplementationNode: java.util.Set getInterfaces()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = staticinvoke <org.objectweb.asm.Type: java.lang.String getInternalName(java.lang.Class)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new org.apache.axiom.weaver.ImplementationClassDefinition;
v = v;
v = v;
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: boolean isEmpty()>();
if v == 0 goto label;
v = null;
goto label;
label:
v = v.<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.MutableReferences parents>;
v = virtualinvoke v.<com.github.veithen.jrel.association.MutableReferences: java.util.Iterator iterator()>();
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.axiom.weaver.ImplementationNode: java.lang.String getClassName()>();
label:
v = interfaceinvoke v.<java.util.List: int size()>();
v = newarray (java.lang.String)[v];
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray(java.lang.Object[])>(v);
v = v.<org.apache.axiom.weaver.ImplementationNode: org.apache.axiom.weaver.InterfaceNode primaryInterface>;
v = virtualinvoke v.<org.apache.axiom.weaver.InterfaceNode: boolean isSingleton()>();
v = interfaceinvoke v.<java.util.List: int size()>();
v = newarray (org.apache.axiom.weaver.mixin.Mixin)[v];
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray(java.lang.Object[])>(v);
specialinvoke v.<org.apache.axiom.weaver.ImplementationClassDefinition: void <init>(org.apache.axiom.weaver.mixin.TargetContext,int,int,java.lang.String,java.lang.String[],boolean,org.apache.axiom.weaver.mixin.Mixin[])>(v, v, v, v, v, v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
return v;
}
static void <clinit>()
{
com.github.veithen.jrel.association.Navigability v, v;
com.github.veithen.jrel.association.ManyToManyAssociation v, v, v, v, v;
com.github.veithen.jrel.transitive.TransitiveClosure v, v, v;
com.github.veithen.jrel.composition.CompositionRelation v;
v = new com.github.veithen.jrel.association.ManyToManyAssociation;
v = <com.github.veithen.jrel.association.Navigability: com.github.veithen.jrel.association.Navigability BIDIRECTIONAL>;
specialinvoke v.<com.github.veithen.jrel.association.ManyToManyAssociation: void <init>(java.lang.Class,java.lang.Class,com.github.veithen.jrel.association.Navigability)>(class "Lorg/apache/axiom/weaver/ImplementationNode;", class "Lorg/apache/axiom/weaver/ImplementationNode;", v);
<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation PARENT> = v;
v = new com.github.veithen.jrel.association.ManyToManyAssociation;
v = <com.github.veithen.jrel.association.Navigability: com.github.veithen.jrel.association.Navigability UNIDIRECTIONAL>;
specialinvoke v.<com.github.veithen.jrel.association.ManyToManyAssociation: void <init>(java.lang.Class,java.lang.Class,com.github.veithen.jrel.association.Navigability)>(class "Lorg/apache/axiom/weaver/ImplementationNode;", class "Lorg/apache/axiom/weaver/MixinNode;", v);
<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation MIXIN> = v;
v = new com.github.veithen.jrel.transitive.TransitiveClosure;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation PARENT>;
specialinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: void <init>(com.github.veithen.jrel.BinaryRelation,boolean)>(v, 0);
<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR> = v;
v = new com.github.veithen.jrel.transitive.TransitiveClosure;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation PARENT>;
specialinvoke v.<com.github.veithen.jrel.transitive.TransitiveClosure: void <init>(com.github.veithen.jrel.BinaryRelation,boolean)>(v, 1);
<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR_OR_SELF> = v;
v = new com.github.veithen.jrel.composition.CompositionRelation;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.transitive.TransitiveClosure ANCESTOR_OR_SELF>;
v = <org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.association.ManyToManyAssociation MIXIN>;
specialinvoke v.<com.github.veithen.jrel.composition.CompositionRelation: void <init>(com.github.veithen.jrel.BinaryRelation,com.github.veithen.jrel.BinaryRelation)>(v, v);
<org.apache.axiom.weaver.ImplementationNode: com.github.veithen.jrel.composition.CompositionRelation TRANSITIVE_MIXIN> = v;
return;
}
}