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

package ch.randelshofer.fastdoubleparser.bte;

import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Collection;
import java.util.Set;

public interface ByteSet
{
    boolean containsKey(final byte p0);
    
    default ByteSet copyOf(Set<Character> set, final boolean ignoreCase) {
        set = applyIgnoreCase(set, ignoreCase);
        switch (set.size()) {
            case 0: {
                return new ByteSetOfNone();
            }
            case 1: {
                return new ByteSetOfOne(set);
            }
            default: {
                return (set.size() < 5) ? new ByteSetOfFew(set) : new ByteToIntMap(set);
            }
        }
    }
    
    default Set<Character> applyIgnoreCase(Set<Character> set, final boolean ignoreCase) {
        if (ignoreCase) {
            final LinkedHashSet<Character> convertedSet = new LinkedHashSet<Character>();
            for (final Character ch : set) {
                convertedSet.add(ch);
                final char lc = Character.toLowerCase(ch);
                final char uc = Character.toUpperCase(ch);
                final char uclc = Character.toLowerCase(uc);
                convertedSet.add(lc);
                convertedSet.add(uc);
                convertedSet.add(uclc);
            }
            set = convertedSet;
        }
        return set;
    }
}
