public static ImmutableList<Struct> getAllStructs(
      final Ds3ApiSpec spec,
      final ImmutableSet<String> enumNames,
      final ImmutableSet<String> responseTypes,
      final ImmutableSet<String> embeddedTypes,
      final ImmutableSet<String> arrayMemberTypes,
      final ImmutableSet<String> paginatedTypes)
      throws ParseException {
    final ImmutableList.Builder<Struct> allStructsBuilder = ImmutableList.builder();
    if (ConverterUtil.hasContent(spec.getTypes())) {
      for (final Ds3Type ds3TypeEntry : spec.getTypes().values()) {
        if (ConverterUtil.hasContent(ds3TypeEntry.getEnumConstants())) continue;

        final Struct structEntry =
            StructConverter.toStruct(
                ds3TypeEntry,
                enumNames,
                responseTypes,
                embeddedTypes,
                arrayMemberTypes,
                paginatedTypes);
        allStructsBuilder.add(structEntry);
      }
    }
    return allStructsBuilder.build();
  }
  public static ImmutableList<Enum> getAllEnums(final Ds3ApiSpec spec) throws ParseException {
    final ImmutableList.Builder<Enum> allEnumsBuilder = ImmutableList.builder();
    if (ConverterUtil.hasContent(spec.getTypes())) {
      for (final Ds3Type ds3TypeEntry : spec.getTypes().values()) {
        if (ConverterUtil.isEmpty(ds3TypeEntry.getEnumConstants())) continue;

        allEnumsBuilder.add(EnumConverter.toEnum(ds3TypeEntry));
      }
    }
    return allEnumsBuilder.build();
  }
 public static ImmutableList<Request> getAllRequests(
     final Ds3ApiSpec spec, final Ds3DocSpec docSpec) throws ParseException {
   final ImmutableList.Builder<Request> allRequestsBuilder = ImmutableList.builder();
   if (ConverterUtil.hasContent(spec.getRequests())) {
     for (final Ds3Request ds3Request : spec.getRequests()) {
       allRequestsBuilder.add(RequestConverter.toRequest(ds3Request, docSpec));
     }
   }
   return allRequestsBuilder.build();
 }