/**
   * @deprecated since it was introduced in 0.9.0; for backwards compatibility only, may be removed
   *     at any point
   */
  @Deprecated
  public static RegisteredType of(CatalogItem<?, ?> item) {
    if (item == null) return null;
    TypeImplementationPlan impl = null;
    if (item.getPlanYaml() != null) {
      impl = new BasicTypeImplementationPlan(null, item.getPlanYaml());
    } else if (item.getJavaType() != null) {
      impl = new JavaClassNameTypeImplementationPlan(item.getJavaType());
    } else {
      throw new IllegalStateException(
          "Unsupported catalog item " + item + " when trying to create RegisteredType");
    }

    BasicRegisteredType type =
        (BasicRegisteredType)
            spec(item.getSymbolicName(), item.getVersion(), impl, item.getCatalogItemJavaType());
    type.displayName = item.getDisplayName();
    type.description = item.getDescription();
    type.iconUrl = item.getIconUrl();

    type.disabled = item.isDisabled();
    type.deprecated = item.isDeprecated();
    if (item.getLibraries() != null) type.bundles.addAll(item.getLibraries());
    // aliases aren't on item
    if (item.tags() != null) type.tags.addAll(item.tags().getTags());

    // these things from item we ignore: javaType, specType, registeredTypeName ...
    return type;
  }
 /** @deprecated since 0.7.0, see {@link #newBasicMemento(BrooklynObject)} */
 @Deprecated
 public static CatalogItemMemento newCatalogItemMemento(CatalogItem<?, ?> catalogItem) {
   if (catalogItem instanceof CatalogItemDo<?, ?>) {
     catalogItem = ((CatalogItemDo<?, ?>) catalogItem).getDto();
   }
   BasicCatalogItemMemento.Builder builder = BasicCatalogItemMemento.builder();
   populateBrooklynObjectMementoBuilder(catalogItem, builder);
   builder
       .catalogItemJavaType(catalogItem.getCatalogItemJavaType())
       .catalogItemType(catalogItem.getCatalogItemType())
       .description(catalogItem.getDescription())
       .iconUrl(catalogItem.getIconUrl())
       .javaType(catalogItem.getJavaType())
       .libraries(catalogItem.getLibraries())
       .symbolicName(catalogItem.getSymbolicName())
       .specType(catalogItem.getSpecType())
       .version(catalogItem.getVersion())
       .planYaml(catalogItem.getPlanYaml())
       .deprecated(catalogItem.isDeprecated())
       .disabled(catalogItem.isDisabled());
   return builder.build();
 }