// Path: app/src/main/java/com/annimon/hotarufx/lib/Value.java
// public interface Value extends Comparable<Value> {
// 
//     Object raw();
// 
//     default boolean asBoolean() {
//         return asInt() != 0;
//     }
// 
//     default int asInt() {
//         return asNumber().intValue();
//     }
// 
//     default double asDouble() {
//         return asNumber().doubleValue();
//     }
// 
//     Number asNumber();
// 
//     String asString();
// 
//     int type();
// }


import com.annimon.hotarufx.lib.Value;
import com.annimon.hotarufx.parser.ast.*;
package com.annimon.hotarufx.parser.visitors;


public interface ResultVisitor<R, T> {

    R visit(AccessNode node, T t);
    R visit(ArrayNode node, T t);
    R visit(AssignNode node, T t);
    R visit(BlockNode node, T t);
    R visit(FunctionNode node, T t);
    R visit(MapNode node, T t);
    R visit(PropertyNode node, T t);
    R visit(UnaryNode node, T t);
    R visit(UnitNode node, T t);
    R visit(ValueNode node, T t);
    R visit(VariableNode node, T t);

// Path: app/src/main/java/com/annimon/hotarufx/lib/Value.java
// public interface Value extends Comparable<Value> {
// 
//     Object raw();
// 
//     default boolean asBoolean() {
//         return asInt() != 0;
//     }
// 
//     default int asInt() {
//         return asNumber().intValue();
//     }
// 
//     default double asDouble() {
//         return asNumber().doubleValue();
//     }
// 
//     Number asNumber();
// 
//     String asString();
// 
//     int type();
// }


// Path: app/src/main/java/com/annimon/hotarufx/parser/visitors/ResultVisitor.java
import com.annimon.hotarufx.lib.Value;
import com.annimon.hotarufx.parser.ast.*;

package com.annimon.hotarufx.parser.visitors;


public interface ResultVisitor<R, T> {

    R visit(AccessNode node, T t);
    R visit(ArrayNode node, T t);
    R visit(AssignNode node, T t);
    R visit(BlockNode node, T t);
    R visit(FunctionNode node, T t);
    R visit(MapNode node, T t);
    R visit(PropertyNode node, T t);
    R visit(UnaryNode node, T t);
    R visit(UnitNode node, T t);
    R visit(ValueNode node, T t);
    R visit(VariableNode node, T t);

    Value get(AccessNode node, T t);