class EruptFieldProxy extends AnnotationProxy<EruptField, Void> {

    private static final EruptField tplEruptField;

    static {
        try {
            tplEruptField = EruptTpl.class.getField(EruptField.class.getSimpleName()).getAnnotation(EruptField.class);
        } catch (NoSuchFieldException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    @SneakyThrows
    protected Object invocation(MethodInvocation invocation) {<FILL_FUNCTION_BODY>}

}

        if (super.matchMethod(invocation, EruptField::views)) {
            View[] views = this.rawAnnotation.views();
            List<View> proxyViews = new ArrayList<>();
            for (View view : views) {
                if (ExprInvoke.getExpr(view.ifRender())) {
                    proxyViews.add(AnnotationProxyPool.getOrPut(view, annotation -> new ViewProxy().newProxy(annotation, this)));
                }
            }
            return proxyViews.toArray(new View[0]);
        } else if (super.matchMethod(invocation, EruptField::edit)) {
            Edit edit = this.rawAnnotation.edit();
            if (ExprInvoke.getExpr(edit.ifRender())) {
                return AnnotationProxyPool.getOrPut(edit, annotation -> new EditProxy().newProxy(annotation, this));
            } else {
                return tplEruptField.edit();
            }
        }
        return this.invoke(invocation);
    
<methods>public non-sealed void <init>() ,public java.lang.Object invoke(MethodInvocation) ,public boolean matchMethod(MethodInvocation, SFunction<T,R>) ,public xyz.erupt.annotation.EruptField newProxy(xyz.erupt.annotation.EruptField) ,public xyz.erupt.annotation.EruptField newProxy(xyz.erupt.annotation.EruptField, AnnotationProxy<java.lang.Void,?>) <variables>protected AnnotationProxy<java.lang.Void,?> parent,public xyz.erupt.annotation.EruptField proxyAnnotation,public xyz.erupt.annotation.EruptField rawAnnotation