// Path: src/main/java/com/j2js/visitors/AbstractVisitor.java
// public abstract class AbstractVisitor {
// 
//  
//     public abstract void visit(ASTNode node);
//     
//     public void visit(TypeDeclaration node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(MethodDeclaration node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(DoStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(WhileStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(IfStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(TryStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(Block node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(InfixExpression node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(PrefixExpression node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(PostfixExpression node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(SwitchStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(SwitchCase node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(CatchClause node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ReturnStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(Assignment node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(NumberLiteral node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(StringLiteral node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(ClassLiteral node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(NullLiteral node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(MethodInvocation node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ClassInstanceCreation node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ArrayInitializer node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ArrayCreation node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ArrayAccess node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(VariableDeclaration node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(VariableBinding node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ThisExpression node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(FieldAccess node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(BreakStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ContinueStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(CastExpression node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(BooleanLiteral node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(ThrowStatement node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(Name node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(InstanceofExpression node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(ConditionalExpression node) {
//     	visit((ASTNode) node);
//     }
//     
//     public void visit(SynchronizedBlock node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(PrimitiveCast node) {
//         visit((ASTNode) node);
//     }
// 
// }


import org.apache.bcel.generic.Type;
import com.j2js.visitors.AbstractVisitor;
        } else if (theValue instanceof Float) {
            type = Type.FLOAT;
        } else if (theValue instanceof Double) {
            type = Type.DOUBLE;
        } else if (theValue instanceof Long) {
            type = Type.LONG;
        } else if (theValue instanceof Short) {
            type = Type.SHORT;
        } else
            // TODO: Other types
            throw new RuntimeException("Type not supported: " + theValue.getClass());
    }
    
    public static NumberLiteral create(int i) {
        Number value;
        if (i == 0) value = ZERO;
        else if (i == 1) value = ONE;
        else value = new Integer(i);
        return new NumberLiteral(value);
    }
    
    public static NumberLiteral create(Number value) {
        if (value instanceof Integer) {
            Integer i = (Integer) value;
            if (i.intValue()==0) value = ZERO;
            else if (i.intValue()==1) value = ONE;
        }
        return new NumberLiteral(value);
    }
    
// Path: src/main/java/com/j2js/visitors/AbstractVisitor.java
// public abstract class AbstractVisitor {
// 
//  
//     public abstract void visit(ASTNode node);
//     
//     public void visit(TypeDeclaration node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(MethodDeclaration node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(DoStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(WhileStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(IfStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(TryStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(Block node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(InfixExpression node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(PrefixExpression node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(PostfixExpression node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(SwitchStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(SwitchCase node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(CatchClause node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ReturnStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(Assignment node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(NumberLiteral node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(StringLiteral node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(ClassLiteral node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(NullLiteral node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(MethodInvocation node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ClassInstanceCreation node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ArrayInitializer node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ArrayCreation node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ArrayAccess node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(VariableDeclaration node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(VariableBinding node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ThisExpression node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(FieldAccess node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(BreakStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(ContinueStatement node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(CastExpression node) {
//         visit((ASTNode) node);
//     }
// 
//     public void visit(BooleanLiteral node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(ThrowStatement node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(Name node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(InstanceofExpression node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(ConditionalExpression node) {
//     	visit((ASTNode) node);
//     }
//     
//     public void visit(SynchronizedBlock node) {
//         visit((ASTNode) node);
//     }
//     
//     public void visit(PrimitiveCast node) {
//         visit((ASTNode) node);
//     }
// 
// }


// Path: src/main/java/com/j2js/dom/NumberLiteral.java
import org.apache.bcel.generic.Type;
import com.j2js.visitors.AbstractVisitor;

        } else if (theValue instanceof Float) {
            type = Type.FLOAT;
        } else if (theValue instanceof Double) {
            type = Type.DOUBLE;
        } else if (theValue instanceof Long) {
            type = Type.LONG;
        } else if (theValue instanceof Short) {
            type = Type.SHORT;
        } else
            // TODO: Other types
            throw new RuntimeException("Type not supported: " + theValue.getClass());
    }
    
    public static NumberLiteral create(int i) {
        Number value;
        if (i == 0) value = ZERO;
        else if (i == 1) value = ONE;
        else value = new Integer(i);
        return new NumberLiteral(value);
    }
    
    public static NumberLiteral create(Number value) {
        if (value instanceof Integer) {
            Integer i = (Integer) value;
            if (i.intValue()==0) value = ZERO;
            else if (i.intValue()==1) value = ONE;
        }
        return new NumberLiteral(value);
    }
    
    public void visit(AbstractVisitor visitor) {