TypeMirror builtType() {
    switch (executableElement.getKind()) {
      case CONSTRUCTOR:
        return executableElement.getEnclosingElement().asType();
      case METHOD:
        return executableElement.getReturnType();
      default:
        throw new VerifyException("Unexpected executable kind " + executableElement.getKind());
    }
  }
A wrapper for an {@link ExecutableElement}, representing a static method or a constructor. This
wrapper then allows us to attach additional information, such as which parameters have Kotlin
defaults.
value/src/main/java/com/google/auto/value/processor/Executable.java