abstract class AbstractJavaExecutableAdapter extends JavaElementAdapter implements AbstractJavaExecutable { private static final long serialVersionUID = -5004287664697277125L; private final ExecutableElement executable; private final JavaBody body = New.body(); public AbstractJavaExecutableAdapter( ExecutableElement executable, Elements elementUtils, Types typeUtils) { super(executable, elementUtils, typeUtils); this.executable = executable; } public PowerList<JavaTypeParameter> getTypeParameters() { return getElementsAdapters(executable.getTypeParameters(), JavaTypeParameter.class); } public JavaType getReturnType() { return getTypeAdapter(executable.getReturnType()); } public PowerList<JavaParameter> getParameters() { return getElementsAdapters(executable.getParameters(), JavaParameter.class); } public Boolean isVarArgs() { return executable.isVarArgs(); } public PowerList<JavaType> getThrownTypes() { PowerList<JavaType> adapters = Power.list(); for (TypeMirror typeMirror : executable.getThrownTypes()) { adapters.add(getTypeAdapter(typeMirror)); } return adapters; } @Override public JavaBody getBody() { return this.body; } @Override protected Class<? extends AbstractJavaExecutable> getAdaptedInterface() { return AbstractJavaExecutable.class; } @Override public AbstractJavaStructure getParent() { return super.retrieveParent(); } @Override public AbstractJavaExecutable copy() { throw calculatedMethodException(); } }