code: private void genMethodTypeSignature(ExecutableElement method, StringBuilder sb) {
      genOptFormalTypeParameters(method.getTypeParameters(), sb);
      sb.append('(');
      for (VariableElement param : method.getParameters()) {
        genTypeSignature(param.asType(), sb);
      }
      sb.append(')');
      genTypeSignature(method.getReturnType(), sb);
      List<? extends TypeMirror> thrownTypes = method.getThrownTypes();
      if (hasGenericSignature(thrownTypes)) {
        for (TypeMirror thrownType : thrownTypes) {
          sb.append('^');
          genTypeSignature(thrownType, sb);
        }
      }
    }
docs: MethodTypeSignature ::= [FormalTypeParameters]
  "(" {TypeSignature} ")" ReturnType {ThrowsSignature}.