// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry;

import io.sentry.util.AutoClosableReentrantLock;
import java.util.Collection;
import java.util.Queue;

final class SynchronizedQueue<E> extends SynchronizedCollection<E> implements Queue<E>
{
    private static final long serialVersionUID = 1L;
    
    static <E> SynchronizedQueue<E> synchronizedQueue(final Queue<E> queue) {
        return new SynchronizedQueue<E>(queue);
    }
    
    private SynchronizedQueue(final Queue<E> queue) {
        super(queue);
    }
    
    protected SynchronizedQueue(final Queue<E> queue, final AutoClosableReentrantLock lock) {
        super(queue, lock);
    }
    
    @Override
    protected Queue<E> decorated() {
        return (Queue)super.decorated();
    }
    
    @Override
    public E element() {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().element();
        }
    }
    
    @Override
    public boolean equals(final Object object) {
        if (object == this) {
            return true;
        }
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().equals(object);
        }
    }
    
    @Override
    public int hashCode() {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().hashCode();
        }
    }
    
    @Override
    public boolean offer(final E e) {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().offer(e);
        }
    }
    
    @Override
    public E peek() {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().peek();
        }
    }
    
    @Override
    public E poll() {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().poll();
        }
    }
    
    @Override
    public E remove() {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().remove();
        }
    }
    
    @Override
    public Object[] toArray() {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().toArray();
        }
    }
    
    @Override
    public <T> T[] toArray(final T[] object) {
        try (final ISentryLifecycleToken ignored = this.lock.acquire()) {
            return this.decorated().toArray(object);
        }
    }
}
