// Path: actors/src/main/java/com/droidkit/actors/mailbox/Envelope.java
// public class Envelope {
//     private final Object message;
//     private final ActorRef sender;
//     private final Mailbox mailbox;
//     private ActorScope scope;
//     private long sendTime;
// 
//     /**
//      * Creating of envelope
//      *
//      * @param message message
//      * @param mailbox mailbox
//      * @param sender  sender reference
//      */
//     public Envelope(Object message, ActorScope scope, Mailbox mailbox, ActorRef sender) {
//         this.scope = scope;
//         this.message = message;
//         this.sender = sender;
//         this.mailbox = mailbox;
//         this.sendTime = ActorTime.currentTime();
//     }
// 
//     public ActorScope getScope() {
//         return scope;
//     }
// 
//     /**
//      * Message in envelope
//      *
//      * @return message
//      */
//     public Object getMessage() {
//         return message;
//     }
// 
//     /**
//      * Mailbox for envelope
//      *
//      * @return mailbox
//      */
//     public Mailbox getMailbox() {
//         return mailbox;
//     }
// 
//     /**
//      * Sender of message
//      *
//      * @return sender reference
//      */
//     public ActorRef getSender() {
//         return sender;
//     }
// 
//     public long getSendTime() {
//         return sendTime;
//     }
// 
//     @Override
//     public String toString() {
//         return "{" + message + " -> " + scope.getPath() + "}";
//     }
// }


import com.droidkit.actors.mailbox.Envelope;
import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.concurrent.atomic.AtomicInteger;
                envelopes.poll();
                result = FetchResult.envelope(envelope);
            } else {
                result = FetchResult.delay(envelope.getTime() - time);
            }
        }

        if (oldKey != envelopes.peek().getKey()) {
            root.changedTopKey(this);
        }

        return result;
    }

    public void clear() {
        synchronized (envelopes) {
            envelopes.clear();
        }
        root.changedTopKey(this);
    }

    public int getSize() {
        synchronized (envelopes) {
            return envelopes.size();
        }
    }

    public Envelope[] allEnvelopes() {
        synchronized (envelopes) {
            ScheduledEnvelope[] scheduledEnvelopes = envelopes.toArray(new ScheduledEnvelope[envelopes.size()]);
// Path: actors/src/main/java/com/droidkit/actors/mailbox/Envelope.java
// public class Envelope {
//     private final Object message;
//     private final ActorRef sender;
//     private final Mailbox mailbox;
//     private ActorScope scope;
//     private long sendTime;
// 
//     /**
//      * Creating of envelope
//      *
//      * @param message message
//      * @param mailbox mailbox
//      * @param sender  sender reference
//      */
//     public Envelope(Object message, ActorScope scope, Mailbox mailbox, ActorRef sender) {
//         this.scope = scope;
//         this.message = message;
//         this.sender = sender;
//         this.mailbox = mailbox;
//         this.sendTime = ActorTime.currentTime();
//     }
// 
//     public ActorScope getScope() {
//         return scope;
//     }
// 
//     /**
//      * Message in envelope
//      *
//      * @return message
//      */
//     public Object getMessage() {
//         return message;
//     }
// 
//     /**
//      * Mailbox for envelope
//      *
//      * @return mailbox
//      */
//     public Mailbox getMailbox() {
//         return mailbox;
//     }
// 
//     /**
//      * Sender of message
//      *
//      * @return sender reference
//      */
//     public ActorRef getSender() {
//         return sender;
//     }
// 
//     public long getSendTime() {
//         return sendTime;
//     }
// 
//     @Override
//     public String toString() {
//         return "{" + message + " -> " + scope.getPath() + "}";
//     }
// }


// Path: actors/src/main/java/com/droidkit/actors/mailbox/collections/EnvelopeCollection.java
import com.droidkit.actors.mailbox.Envelope;
import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.concurrent.atomic.AtomicInteger;

                envelopes.poll();
                result = FetchResult.envelope(envelope);
            } else {
                result = FetchResult.delay(envelope.getTime() - time);
            }
        }

        if (oldKey != envelopes.peek().getKey()) {
            root.changedTopKey(this);
        }

        return result;
    }

    public void clear() {
        synchronized (envelopes) {
            envelopes.clear();
        }
        root.changedTopKey(this);
    }

    public int getSize() {
        synchronized (envelopes) {
            return envelopes.size();
        }
    }

    public Envelope[] allEnvelopes() {
        synchronized (envelopes) {
            ScheduledEnvelope[] scheduledEnvelopes = envelopes.toArray(new ScheduledEnvelope[envelopes.size()]);
            Envelope[] res = new Envelope[scheduledEnvelopes.length];