package tracematches;

import java.util.*;

public class Constraint$tracematch$0
{
    public static final tracematches.Constraint$tracematch$0 trueC;
    public static final tracematches.Constraint$tracematch$0 falseC;
    public java.util.LinkedHashSet disjuncts;

    public Constraint$tracematch$0()
    {
        super();


        disjuncts = new LinkedHashSet();
    }

    public Constraint$tracematch$0(java.util.LinkedHashSet r1)
    {
        super();


        disjuncts = r1;
    }

    static
    {
        java.util.LinkedHashSet r1;

        r1 = new LinkedHashSet();
        r1.add(new Disjunct$tracematch$0());
        trueC = new Constraint$tracematch$0(r1);
        falseC = new Constraint$tracematch$0();
    }

    protected void finalize()
    {
    }

    public tracematches.Constraint$tracematch$0 or(tracematches.Constraint$tracematch$0 r1)
    {
        tracematches.Constraint$tracematch$0 r2, r3;

        r2 = trueC;
        r3 = falseC;

        if (this != r2 && r1 != r2)
        {
            if (r1 != r3)
            {
                if (this == r3)
                {
                    return r1.copy();
                }
                else
                {
                    disjuncts.addAll(r1.disjuncts);
                }
            }

            return this;
        }

        return r2;
    }

    public tracematches.Constraint$tracematch$0 copy()
    {
        java.util.LinkedHashSet r1;

        r1 = new LinkedHashSet(disjuncts);
        return new Constraint$tracematch$0(r1);
    }

    public java.lang.Object[] getDisjunctArray()
    {

        return disjuncts.toArray();
    }

    public tracematches.Constraint$tracematch$0 addBindingsForSymbolcreate_enum(int i0, int i1, java.util.Vector r1, java.util.Enumeration r2)
    {
        tracematches.Constraint$tracematch$0 r3;
        java.util.Iterator r4;
        tracematches.Disjunct$tracematch$0 r5;
        java.util.LinkedHashSet $r6, r7;

        r3 = falseC;

        if (this != r3)
        {
            $r6 = disjuncts;
            r7 = new LinkedHashSet();
            r4 = $r6.iterator();

            while (r4.hasNext())
            {
                r5 = (Disjunct$tracematch$0) r4.next();

                if (r5.validateDisjunct(i1))
                {
                    r7.add(r5.addBindingsForSymbolcreate_enum(i0, i1, r1, r2));
                }
                else
                {
                    r4.remove();
                }
            }

            r7.remove(Disjunct$tracematch$0.falseD);

            if ( ! (r7.isEmpty()))
            {
                return new Constraint$tracematch$0(r7);
            }
        }

        return r3;
    }

    public tracematches.Constraint$tracematch$0 addBindingsForSymbolcall_next(int i0, int i1, java.util.Enumeration r1)
    {
        tracematches.Constraint$tracematch$0 r2;
        java.util.Iterator r3;
        tracematches.Disjunct$tracematch$0 r4;
        java.util.LinkedHashSet $r5, r6;

        r2 = falseC;

        if (this != r2)
        {
            $r5 = disjuncts;
            r6 = new LinkedHashSet();
            r3 = $r5.iterator();

            while (r3.hasNext())
            {
                r4 = (Disjunct$tracematch$0) r3.next();

                if (r4.validateDisjunct(i1))
                {
                    r6.add(r4.addBindingsForSymbolcall_next(i0, i1, r1));
                }
                else
                {
                    r3.remove();
                }
            }

            r6.remove(Disjunct$tracematch$0.falseD);

            if ( ! (r6.isEmpty()))
            {
                return new Constraint$tracematch$0(r6);
            }
        }

        return r2;
    }

    public tracematches.Constraint$tracematch$0 addBindingsForSymbolupdate_source(int i0, int i1, java.util.Vector r1)
    {
        tracematches.Constraint$tracematch$0 r2;
        java.util.Iterator r3;
        tracematches.Disjunct$tracematch$0 r4;
        java.util.LinkedHashSet $r5, r6;

        r2 = falseC;

        if (this != r2)
        {
            $r5 = disjuncts;
            r6 = new LinkedHashSet();
            r3 = $r5.iterator();

            while (r3.hasNext())
            {
                r4 = (Disjunct$tracematch$0) r3.next();

                if (r4.validateDisjunct(i1))
                {
                    r6.add(r4.addBindingsForSymbolupdate_source(i0, i1, r1));
                }
                else
                {
                    r3.remove();
                }
            }

            r6.remove(Disjunct$tracematch$0.falseD);

            if ( ! (r6.isEmpty()))
            {
                return new Constraint$tracematch$0(r6);
            }
        }

        return r2;
    }

    public tracematches.Constraint$tracematch$0 addNegativeBindingsForSymbolcreate_enum(int i0, java.util.Vector r1, java.util.Enumeration r2)
    {
        tracematches.Constraint$tracematch$0 r3;
        java.util.Iterator r4;
        tracematches.Disjunct$tracematch$0 r5;
        java.util.LinkedHashSet $r6, r7;

        r3 = falseC;

        if (this != r3)
        {
            $r6 = disjuncts;
            r7 = new LinkedHashSet();
            r4 = $r6.iterator();

            while (r4.hasNext())
            {
                r5 = (Disjunct$tracematch$0) r4.next();

                if (r5.validateDisjunct(i0))
                {
                    r7.addAll(r5.addNegativeBindingsForSymbolcreate_enum(i0, r1, r2));
                }
                else
                {
                    r4.remove();
                }
            }

            r7.remove(Disjunct$tracematch$0.falseD);

            if ( ! (r7.isEmpty()))
            {
                return new Constraint$tracematch$0(r7);
            }
        }

        return r3;
    }

    public tracematches.Constraint$tracematch$0 addNegativeBindingsForSymbolcall_next(int i0, java.util.Enumeration r1)
    {
        tracematches.Constraint$tracematch$0 r2;
        java.util.Iterator r3;
        tracematches.Disjunct$tracematch$0 r4;
        java.util.LinkedHashSet $r5, r6;

        r2 = falseC;

        if (this != r2)
        {
            $r5 = disjuncts;
            r6 = new LinkedHashSet();
            r3 = $r5.iterator();

            while (r3.hasNext())
            {
                r4 = (Disjunct$tracematch$0) r3.next();

                if (r4.validateDisjunct(i0))
                {
                    r6.add(r4.addNegativeBindingsForSymbolcall_next(i0, r1));
                }
                else
                {
                    r3.remove();
                }
            }

            r6.remove(Disjunct$tracematch$0.falseD);

            if ( ! (r6.isEmpty()))
            {
                return new Constraint$tracematch$0(r6);
            }
        }

        return r2;
    }

    public tracematches.Constraint$tracematch$0 addNegativeBindingsForSymbolupdate_source(int i0, java.util.Vector r1)
    {
        tracematches.Constraint$tracematch$0 r2;
        java.util.Iterator r3;
        tracematches.Disjunct$tracematch$0 r4;
        java.util.LinkedHashSet $r5, r6;

        r2 = falseC;

        if (this != r2)
        {
            $r5 = disjuncts;
            r6 = new LinkedHashSet();
            r3 = $r5.iterator();

            while (r3.hasNext())
            {
                r4 = (Disjunct$tracematch$0) r3.next();

                if (r4.validateDisjunct(i0))
                {
                    r6.add(r4.addNegativeBindingsForSymbolupdate_source(i0, r1));
                }
                else
                {
                    r3.remove();
                }
            }

            r6.remove(Disjunct$tracematch$0.falseD);

            if ( ! (r6.isEmpty()))
            {
                return new Constraint$tracematch$0(r6);
            }
        }

        return r2;
    }
}
