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

package it.unimi.dsi.fastutil.floats;

import java.util.Iterator;
import java.util.Spliterator;
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
import java.util.Objects;
import it.unimi.dsi.fastutil.doubles.DoubleSpliterators;
import it.unimi.dsi.fastutil.doubles.DoubleSpliterator;
import it.unimi.dsi.fastutil.doubles.DoubleIterators;
import it.unimi.dsi.fastutil.doubles.DoubleIterator;

public interface FloatIterable extends Iterable<Float>
{
    FloatIterator iterator();
    
    default DoubleIterator doubleIterator() {
        return DoubleIterators.wrap(this.iterator());
    }
    
    default FloatSpliterator spliterator() {
        return FloatSpliterators.asSpliteratorUnknownSize(this.iterator(), 0);
    }
    
    default DoubleSpliterator doubleSpliterator() {
        return DoubleSpliterators.wrap(this.spliterator());
    }
    
    default void forEach(final FloatConsumer action) {
        Objects.requireNonNull(action);
        this.iterator().forEachRemaining(action);
    }
    
    default void forEach(final DoubleConsumer action) {
        Objects.requireNonNull(action);
        FloatConsumer action2;
        if (action instanceof FloatConsumer) {
            action2 = (FloatConsumer)action;
        }
        else {
            Objects.requireNonNull(action);
            action2 = action::accept;
        }
        this.forEach(action2);
    }
    
    @Deprecated
    default void forEach(final Consumer<? super Float> action) {
        Objects.requireNonNull(action);
        FloatConsumer action2;
        if (action instanceof FloatConsumer) {
            action2 = (FloatConsumer)action;
        }
        else {
            Objects.requireNonNull(action);
            action2 = action::accept;
        }
        this.forEach(action2);
    }
}
