docs: @Requires({
      "type != null",
      "type.getKind() == javax.lang.model.type.TypeKind.DECLARED"
    })
    @Ensures("result == null || result.getDeclaredName().equals(type.toString())")
    ClassName getClassNameForType(TypeMirror type) {
      DeclaredType tmp = (DeclaredType) type;
      TypeElement element = (TypeElement) tmp.asElement();
      String binaryName = elementUtils.getBinaryName(element)
          .toString().replace('.', '/');
      return new ClassName(binaryName, type.toString());
    }