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

package com.hypixel.hytale.codec.validation;

import com.hypixel.hytale.codec.WrappedCodec;
import java.util.Set;
import com.hypixel.hytale.codec.ExtraInfo;
import com.hypixel.hytale.codec.Codec;

public interface ValidatableCodec<T> extends Codec<T>
{
    void validate(final T p0, final ExtraInfo p1);
    
    void validateDefaults(final ExtraInfo p0, final Set<Codec<?>> p1);
    
    default void validateDefaults(Codec<?> codec, final ExtraInfo extraInfo, final Set<Codec<?>> tested) {
        while (codec instanceof WrappedCodec) {
            final WrappedCodec<?> wrappedCodec = (WrappedCodec)codec;
            codec = wrappedCodec.getChildCodec();
            if (codec == null) {
                return;
            }
        }
        if (codec instanceof final ValidatableCodec validatableCodec2) {
            final ValidatableCodec<?> validatableCodec = validatableCodec2;
            validatableCodec.validateDefaults(extraInfo, tested);
        }
    }
}
