code: public <T extends HalRepresentation> Optional<T> getResourceAs(final Class<T> type,
                                                                     final EmbeddedTypeInfo embeddedTypeInfo,
                                                                     final EmbeddedTypeInfo... moreEmbeddedTypeInfos) throws IOException {
          if (moreEmbeddedTypeInfos == null || moreEmbeddedTypeInfos.length == 0) {
              return getResourceAs(type, embeddedTypeInfo != null ? singletonList(embeddedTypeInfo) : emptyList());
          } else {
              final List<EmbeddedTypeInfo> typeInfos = new ArrayList<>();
              typeInfos.add(requireNonNull(embeddedTypeInfo));
              typeInfos.addAll(asList(moreEmbeddedTypeInfos));
              return getResourceAs(type, typeInfos);
          }
      }
docs: Return the selected resource and return it in the specified type.
  <p>
  The EmbeddedTypeInfo is used to define the specific type of embedded items.
  </p>
  <p>
  If there are multiple matching representations, the first node is returned.
  </p>
  @param type the subtype of the HalRepresentation used to parse the resource.
  @param embeddedTypeInfo specification of the type of embedded items
  @param moreEmbeddedTypeInfos more type infors for embedded items
  @param <T> the subtype of HalRepresentation of the returned resource.
  @return HalRepresentation
  @throws IOException if a low-level I/O problem (unexpected end-of-input, network error) occurs.
  @throws JsonParseException if the json document can not be parsed by Jackson's ObjectMapper
  @throws JsonMappingException if the input JSON structure can not be mapped to the specified HalRepresentation type
  @since 1.0.0