@Override
  public void emitService(Service service, Set<String> importedTypes) throws IOException {
    importedTypes.addAll(getImports(service));
    writer.emitImports(importedTypes);
    writer.emitEmptyLine();

    if (!service.getDocumentation().isEmpty()) {
      writer.emitJavadoc(service.getDocumentation());
    }
    writer.beginType(service.getName(), "interface", EnumSet.of(Modifier.PUBLIC));
    for (Service.Method method : service.getMethods()) {
      String requestType = method.getRequestType();
      int index = requestType.lastIndexOf('.');
      if (index != -1) {
        requestType = requestType.substring(index + 1);
      }

      if (!method.getDocumentation().isEmpty()) {
        writer.emitJavadoc(method.getDocumentation());
      }
      emitAnnotation(service, method);
      writer.beginMethod(
          method.getResponseType(),
          getMethodName(method),
          EnumSet.noneOf(Modifier.class),
          Arrays.asList(getRequestType(requestType), getRequestName(requestType)),
          getThrows());
      writer.endMethod();
    }
    writer.endType();
  }
 String getMethodName(Service.Method method) {
   return lowerCaseInitialLetter(method.getName());
 }