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

package it.unimi.dsi.fastutil.longs;

import java.util.Iterator;
import java.util.Spliterator;
import java.util.function.Consumer;
import java.util.Objects;
import java.util.function.LongConsumer;

public interface LongIterable extends Iterable<Long>
{
    LongIterator iterator();
    
    default LongIterator longIterator() {
        return this.iterator();
    }
    
    default LongSpliterator spliterator() {
        return LongSpliterators.asSpliteratorUnknownSize(this.iterator(), 0);
    }
    
    default LongSpliterator longSpliterator() {
        return this.spliterator();
    }
    
    default void forEach(final LongConsumer action) {
        Objects.requireNonNull(action);
        this.iterator().forEachRemaining(action);
    }
    
    default void forEach(final it.unimi.dsi.fastutil.longs.LongConsumer action) {
        this.forEach((LongConsumer)action);
    }
    
    @Deprecated
    default void forEach(final Consumer<? super Long> action) {
        Objects.requireNonNull(action);
        LongConsumer action2;
        if (action instanceof LongConsumer) {
            action2 = (LongConsumer)action;
        }
        else {
            Objects.requireNonNull(action);
            action2 = action::accept;
        }
        this.forEach(action2);
    }
}
