// Path: src/travis/model/project/structure/StructMethod.java
// public class StructMethod extends StructComponent {
// 
//     private static final long serialVersionUID = 3139286677120020833L;
// 
//     private final String descriptor;
// 
//     public StructMethod(MethodNode methodNode, StructClass parent) {
//         super(methodNode.name, methodNode.access, parent, State.YES);
//         this.descriptor = methodNode.desc;
//         isPartOfClassPath = State.YES;
//     }
// 
//     public StructMethod(StructClass parent, StructStub stub) {
//         super(parent, stub);
//         this.descriptor = stub.getDescriptor();
//         isPartOfClassPath = State.YES;
//     }
// 
//     @Override
//     public boolean isPartOfClassPath() {
//         return true;
//     }
// 
//     @Override
//     public boolean containsAnyClasses() {
//         return true;
//     }
// 
//     @Override
//     protected String getClassPath() {
//         return getParent().getClassPath();
//     }
// 
//     @Override
//     public boolean isMainMethod() {
//         return getName().equals("main")
//                 && descriptor.equals("([Ljava/lang/String;)V") && isStatic()
//                 && getVisibility() == Visibility.PUBLIC;
//     }
// 
//     @Override
//     public String getDescriptor() {
//         return descriptor.replaceAll("/", ".");
//     }
// 
//     @Override
//     public String getReturnType() {
//         return StructUtil.getLastPartOfClassName(Type.getReturnType(descriptor)
//                 .getClassName());
//     }
// 
//     @Override
//     public String getParameters(boolean fullClassNames) {
//         StringBuilder sb = new StringBuilder();
//         Type[] types = Type.getArgumentTypes(descriptor);
//         for (int i = 0; i < types.length; i++) {
//             if (i != 0) {
//                 sb.append(", ");
//             }
// 
//             if (fullClassNames) {
//                 sb.append(types[i].getClassName());
//             } else {
//                 sb.append(StructUtil.getLastPartOfClassName(types[i]
//                         .getClassName()));
//             }
//         }
//         return sb.toString();
//     }
// 
//     @Override
//     public boolean isConstructor() {
//         String name = getName();
//         return name.equals("<clinit>") || name.equals("<init>");
//     }
// 
//     @Override
//     public boolean addStructComponent(StructComponent sComponent) {
//         throw new IllegalArgumentException(
//                 Messages.get("smethod.component.exception"));
//     }
// 
//     @Override
//     public boolean removeStructComponent(StructComponent sComponent) {
//         throw new IllegalArgumentException(
//                 Messages.get("smethod.component.exception"));
//     }
// 
//     @Override
//     public String getTooltipFriendlyName() {
//         StringBuilder sb = new StringBuilder();
//         sb.append(getParent().getTooltipFriendlyName());
//         sb.append('.');
//         sb.append(getName());
//         addParameters(sb);
//         return sb.toString();
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder sb = new StringBuilder();
//         sb.append(getName());
//         addParameters(sb);
//         if (!isConstructor()) {
//             sb.append(" : ");
//             String returnType = StructUtil.getLastPartOfClassName(Type
//                     .getReturnType(descriptor).getClassName());
//             sb.append(returnType);
//         }
//         return sb.toString();
//     }
// 
//     private void addParameters(StringBuilder sb) {
//         sb.append('(');
//         sb.append(getParameters(false));
//         sb.append(')');
//     }
// 
// }


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Observable;
import javax.swing.tree.TreePath;
import travis.model.project.structure.StructMethod;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.ObjectOutputStream;
import java.nio.channels.FileChannel;

    public void sendTraceInfo(TraceInfo trace) {
        if (trace != null) {
            setChanged();
            notifyObservers(trace);
        }
    }

    public void sendEmptyCall() {
        setChanged();
        notifyObservers();
    }

    private void flush() {
        counter = 0;
        try {
            synchronized (outputFile) {
                fw.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void writeScriptHeader(ScriptGenerator scriptGen) {
        try {
            synchronized (outputFile) {
                configureNewFileWriter();
                Map<StructMethod, Integer> map = scriptGen.getMethods();
                for (Entry<StructMethod, Integer> e : map.entrySet()) {
// Path: src/travis/model/project/structure/StructMethod.java
// public class StructMethod extends StructComponent {
// 
//     private static final long serialVersionUID = 3139286677120020833L;
// 
//     private final String descriptor;
// 
//     public StructMethod(MethodNode methodNode, StructClass parent) {
//         super(methodNode.name, methodNode.access, parent, State.YES);
//         this.descriptor = methodNode.desc;
//         isPartOfClassPath = State.YES;
//     }
// 
//     public StructMethod(StructClass parent, StructStub stub) {
//         super(parent, stub);
//         this.descriptor = stub.getDescriptor();
//         isPartOfClassPath = State.YES;
//     }
// 
//     @Override
//     public boolean isPartOfClassPath() {
//         return true;
//     }
// 
//     @Override
//     public boolean containsAnyClasses() {
//         return true;
//     }
// 
//     @Override
//     protected String getClassPath() {
//         return getParent().getClassPath();
//     }
// 
//     @Override
//     public boolean isMainMethod() {
//         return getName().equals("main")
//                 && descriptor.equals("([Ljava/lang/String;)V") && isStatic()
//                 && getVisibility() == Visibility.PUBLIC;
//     }
// 
//     @Override
//     public String getDescriptor() {
//         return descriptor.replaceAll("/", ".");
//     }
// 
//     @Override
//     public String getReturnType() {
//         return StructUtil.getLastPartOfClassName(Type.getReturnType(descriptor)
//                 .getClassName());
//     }
// 
//     @Override
//     public String getParameters(boolean fullClassNames) {
//         StringBuilder sb = new StringBuilder();
//         Type[] types = Type.getArgumentTypes(descriptor);
//         for (int i = 0; i < types.length; i++) {
//             if (i != 0) {
//                 sb.append(", ");
//             }
// 
//             if (fullClassNames) {
//                 sb.append(types[i].getClassName());
//             } else {
//                 sb.append(StructUtil.getLastPartOfClassName(types[i]
//                         .getClassName()));
//             }
//         }
//         return sb.toString();
//     }
// 
//     @Override
//     public boolean isConstructor() {
//         String name = getName();
//         return name.equals("<clinit>") || name.equals("<init>");
//     }
// 
//     @Override
//     public boolean addStructComponent(StructComponent sComponent) {
//         throw new IllegalArgumentException(
//                 Messages.get("smethod.component.exception"));
//     }
// 
//     @Override
//     public boolean removeStructComponent(StructComponent sComponent) {
//         throw new IllegalArgumentException(
//                 Messages.get("smethod.component.exception"));
//     }
// 
//     @Override
//     public String getTooltipFriendlyName() {
//         StringBuilder sb = new StringBuilder();
//         sb.append(getParent().getTooltipFriendlyName());
//         sb.append('.');
//         sb.append(getName());
//         addParameters(sb);
//         return sb.toString();
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder sb = new StringBuilder();
//         sb.append(getName());
//         addParameters(sb);
//         if (!isConstructor()) {
//             sb.append(" : ");
//             String returnType = StructUtil.getLastPartOfClassName(Type
//                     .getReturnType(descriptor).getClassName());
//             sb.append(returnType);
//         }
//         return sb.toString();
//     }
// 
//     private void addParameters(StringBuilder sb) {
//         sb.append('(');
//         sb.append(getParameters(false));
//         sb.append(')');
//     }
// 
// }


// Path: src/travis/model/script/ScriptHandler.java
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Observable;
import javax.swing.tree.TreePath;
import travis.model.project.structure.StructMethod;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.ObjectOutputStream;
import java.nio.channels.FileChannel;


    public void sendTraceInfo(TraceInfo trace) {
        if (trace != null) {
            setChanged();
            notifyObservers(trace);
        }
    }

    public void sendEmptyCall() {
        setChanged();
        notifyObservers();
    }

    private void flush() {
        counter = 0;
        try {
            synchronized (outputFile) {
                fw.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void writeScriptHeader(ScriptGenerator scriptGen) {
        try {
            synchronized (outputFile) {
                configureNewFileWriter();
                Map<StructMethod, Integer> map = scriptGen.getMethods();
                for (Entry<StructMethod, Integer> e : map.entrySet()) {
                    StructMethod m = e.getKey();