// Path: ghostwriter-jdk-v7/src/main/java/io/ghostwriter/openjdk/v7/model/Method.java
// public class Method extends AstModel<JCMethodDecl> {    
//     private final String name;
//     private final Clazz clazz;
//     private final List<Parameter> parameters;
// 
//     public Method(String name, Clazz clazz, List<Parameter> parameters, JCMethodDecl representation) {
//         super(representation);
//         Objects.requireNonNull(clazz, "Must provide a valid class AST model!");
//         Objects.requireNonNull(name, "Must provide a valid parameter name!");
//         if ("".equals(name)) {
//             throw new IllegalArgumentException("Must provide a non-empty method name!");
//         }
// 
//         this.name = name;
//         this.clazz = clazz;
//         this.parameters = parameters;
//     }
// 
//     public Clazz getClazz() {
//         return clazz;
//     }
//     
//     public String getName() {
//         return name;
//     }
// 
//     public List<Parameter> getParameters() {
//         return parameters;
//     }
// 
//     @Override
//     public String toString() {
//         return "Method [class=" + clazz.getFullyQualifiedClassName() + ", name=" + name + ", parameters=" + parameters + "]";
//     }
// 
// }


import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.util.List;
import io.ghostwriter.openjdk.v7.model.Method;
import java.util.Objects;
package io.ghostwriter.openjdk.v7.ast.compiler;




/**
 * Contains helper methods that are used to deduce information about existing code and code model or
 * create Java language representations of various elements. 
 * Helper methods built on the {@code JavaCompiler} interface are collected in this file.
 */
public class JavaCompilerHelper {

    private static final String EXCLUDE_ANNOTATION_TYPE = "io.ghostwriter.annotation.Exclude";

    private static final String TIMEOUT_ANNOTATION_TYPE = "io.ghostwriter.annotation.Timeout";

    private static final String INCLUDE_ANNOTATION_TYPE = "io.ghostwriter.annotation.Include";

    private final JavaCompiler javac;

    public JavaCompilerHelper(JavaCompiler javac) {
        this.javac = Objects.requireNonNull(javac);
    }

// Path: ghostwriter-jdk-v7/src/main/java/io/ghostwriter/openjdk/v7/model/Method.java
// public class Method extends AstModel<JCMethodDecl> {    
//     private final String name;
//     private final Clazz clazz;
//     private final List<Parameter> parameters;
// 
//     public Method(String name, Clazz clazz, List<Parameter> parameters, JCMethodDecl representation) {
//         super(representation);
//         Objects.requireNonNull(clazz, "Must provide a valid class AST model!");
//         Objects.requireNonNull(name, "Must provide a valid parameter name!");
//         if ("".equals(name)) {
//             throw new IllegalArgumentException("Must provide a non-empty method name!");
//         }
// 
//         this.name = name;
//         this.clazz = clazz;
//         this.parameters = parameters;
//     }
// 
//     public Clazz getClazz() {
//         return clazz;
//     }
//     
//     public String getName() {
//         return name;
//     }
// 
//     public List<Parameter> getParameters() {
//         return parameters;
//     }
// 
//     @Override
//     public String toString() {
//         return "Method [class=" + clazz.getFullyQualifiedClassName() + ", name=" + name + ", parameters=" + parameters + "]";
//     }
// 
// }


// Path: ghostwriter-jdk-v7/src/main/java/io/ghostwriter/openjdk/v7/ast/compiler/JavaCompilerHelper.java
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.util.List;
import io.ghostwriter.openjdk.v7.model.Method;
import java.util.Objects;

package io.ghostwriter.openjdk.v7.ast.compiler;




/**
 * Contains helper methods that are used to deduce information about existing code and code model or
 * create Java language representations of various elements. 
 * Helper methods built on the {@code JavaCompiler} interface are collected in this file.
 */
public class JavaCompilerHelper {

    private static final String EXCLUDE_ANNOTATION_TYPE = "io.ghostwriter.annotation.Exclude";

    private static final String TIMEOUT_ANNOTATION_TYPE = "io.ghostwriter.annotation.Timeout";

    private static final String INCLUDE_ANNOTATION_TYPE = "io.ghostwriter.annotation.Include";

    private final JavaCompiler javac;

    public JavaCompilerHelper(JavaCompiler javac) {
        this.javac = Objects.requireNonNull(javac);
    }

    public JCTree.JCLiteral methodName(Method model) {