// Path: Support/rsense-0.2/src/org/cx4a/rsense/ruby/IRubyObject.java
// public interface IRubyObject {
//     public Ruby getRuntime();
//     public RubyClass getMetaClass();
//     public void setMetaClass(RubyClass metaClass);
//     public RubyClass getSingletonClass();
//     public RubyClass makeMetaClass(RubyClass superClass);
//     public IRubyObject getInstVar(String name);
//     public void setInstVar(String name, IRubyObject value);
//     public boolean isNil();
//     public boolean isInstanceOf(RubyModule klass);
//     public boolean isKindOf(RubyModule klass);
//     public Object getTag();
//     public void setTag(Object tag);
// }


import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.Collection;
import java.util.Properties;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import org.jruby.Ruby;
import org.jruby.ast.Node;
import org.cx4a.rsense.ruby.IRubyObject;
import org.cx4a.rsense.util.Logger;
import org.cx4a.rsense.util.HereDocReader;
                    codeAssistError(result, options);
                }
            }
        } catch (Exception e) {
            commandException(e, options);
        }
    }

    private void commandTypeInference(Options options) {
        try {
            TypeInferenceResult result;
            Project project = codeAssist.getProject(options);
            if (options.isFileStdin()) {
                result = codeAssist.typeInference(project,
                                                  new File("(stdin)"),
                                                  options.getHereDocReader(inReader),
                                                  options.getLocation());
            } else {
                result = codeAssist.typeInference(project,
                                                  options.getFile(),
                                                  options.getEncoding(),
                                                  options.getLocation());
            }

            if (options.isPrintAST()) {
                Logger.debug("AST:\n%s", result.getAST());
            }
            
            if (options.isTest()) {
                Set<String> data = new HashSet<String>();
// Path: Support/rsense-0.2/src/org/cx4a/rsense/ruby/IRubyObject.java
// public interface IRubyObject {
//     public Ruby getRuntime();
//     public RubyClass getMetaClass();
//     public void setMetaClass(RubyClass metaClass);
//     public RubyClass getSingletonClass();
//     public RubyClass makeMetaClass(RubyClass superClass);
//     public IRubyObject getInstVar(String name);
//     public void setInstVar(String name, IRubyObject value);
//     public boolean isNil();
//     public boolean isInstanceOf(RubyModule klass);
//     public boolean isKindOf(RubyModule klass);
//     public Object getTag();
//     public void setTag(Object tag);
// }


// Path: Support/rsense-0.2/src/org/cx4a/rsense/Main.java
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.Collection;
import java.util.Properties;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import org.jruby.Ruby;
import org.jruby.ast.Node;
import org.cx4a.rsense.ruby.IRubyObject;
import org.cx4a.rsense.util.Logger;
import org.cx4a.rsense.util.HereDocReader;

                    codeAssistError(result, options);
                }
            }
        } catch (Exception e) {
            commandException(e, options);
        }
    }

    private void commandTypeInference(Options options) {
        try {
            TypeInferenceResult result;
            Project project = codeAssist.getProject(options);
            if (options.isFileStdin()) {
                result = codeAssist.typeInference(project,
                                                  new File("(stdin)"),
                                                  options.getHereDocReader(inReader),
                                                  options.getLocation());
            } else {
                result = codeAssist.typeInference(project,
                                                  options.getFile(),
                                                  options.getEncoding(),
                                                  options.getLocation());
            }

            if (options.isPrintAST()) {
                Logger.debug("AST:\n%s", result.getAST());
            }
            
            if (options.isTest()) {
                Set<String> data = new HashSet<String>();
                for (IRubyObject klass : result.getTypeSet()) {