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

package com.hypixel.hytale.codec.validation;

import javax.annotation.Nonnull;
import com.hypixel.hytale.codec.ExtraInfo;
import com.hypixel.hytale.codec.schema.config.Schema;
import com.hypixel.hytale.codec.schema.SchemaContext;
import java.util.function.BiConsumer;

public interface Validator<T> extends BiConsumer<T, ValidationResults>
{
    void accept(final T p0, final ValidationResults p1);
    
    void updateSchema(final SchemaContext p0, final Schema p1);
    
    @Nonnull
    default LateValidator<T> late() {
        final Validator<T> current = this;
        return new LateValidator<T>(this) {
            @Override
            public void accept(final T t, final ValidationResults results) {
            }
            
            @Override
            public void acceptLate(final T t, final ValidationResults results, final ExtraInfo extraInfo) {
                current.accept(t, results);
            }
            
            @Override
            public void updateSchema(final SchemaContext context, final Schema target) {
                current.updateSchema(context, target);
            }
        };
    }
}
