code: private static void formalTypeParameter(Result sb, TypeParameterElement typeParameter) throws IOException
      {
          sb.append(typeParameter.getSimpleName());
          List<? extends TypeMirror> bounds = typeParameter.getBounds();
          if (!bounds.isEmpty())
          {
              TypeMirror tm = bounds.get(0);
              if (TypeKind.DECLARED == tm.getKind())
              {
                  DeclaredType dt = (DeclaredType) tm;
                  if (ElementKind.CLASS != dt.asElement().getKind())
                  {
                      sb.append(':');
                  }
              }
          }
          for (TypeMirror bound : bounds)
          {
              sb.append(':');
              fieldTypeSignature(sb, bound);
          }
      }
docs: FormalTypeParameter:
  Identifier ClassBound InterfaceBound*
  @param typeVariable
  @return