@Test
  public void testGetImageObject() {

    AdapterFactory adapterFactoryImpl = new ProjectItemProviderAdapterFactory();
    LayerItemProvider itemProvider = new LayerItemProvider(adapterFactoryImpl);
    AdapterFactoryLabelProvider fac = new AdapterFactoryLabelProvider(adapterFactoryImpl);

    Image image = null;
    Image image2 = null;
    try {
      layer.eAdapters().add(itemProvider);
      image = (Image) fac.getImage(layer);
      assertNotNull(image);
      image2 = (Image) fac.getImage(layer);
      assertSame(image, image2);

      layer
          .getProperties()
          .put(LayerItemProvider.GENERATED_ICON, Glyph.geometry(Color.RED, Color.BLACK));

      image2 = (Image) fac.getImage(layer);
      assertNotSame(image, image2);

      layer
          .getProperties()
          .put(LayerItemProvider.GENERATED_ICON, Glyph.geometry(Color.GREEN, Color.BLACK));

      image = (Image) fac.getImage(layer);
      assertNotSame(image, image2);

      layer.setIcon(Glyph.geometry(Color.GREEN, Color.RED));
      image2 = (Image) fac.getImage(layer);
      assertNotSame(image, image2);

      layer
          .getProperties()
          .put(LayerItemProvider.GENERATED_ICON, Glyph.geometry(Color.GREEN, Color.BLUE));
      image = (Image) fac.getImage(layer);
      assertSame(image, image2);

    } finally {
      fac.dispose();
      itemProvider.dispose();
    }
  }
  /**
   * This returns the property descriptors for the adapted class.
   * <!--
   * begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  @Override
  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
    if (itemPropertyDescriptors == null) {
      super.getPropertyDescriptors(object);

      addActiveByDefaultPropertyDescriptor(object);
      addOptionalPropertyDescriptor(object);
    }
    return itemPropertyDescriptors;
  }
  /**
   * This handles model notifications by calling {@link #updateChildren} to update any cached
   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
   * <!-- begin-user-doc -->
   * <!--
   * end-user-doc -->
   *
   * @generated
   */
  @Override
  public void notifyChanged(Notification notification) {
    updateChildren(notification);

    switch (notification.getFeatureID(AdditionalLayer.class)) {
      case DescriptionPackage.ADDITIONAL_LAYER__ACTIVE_BY_DEFAULT:
      case DescriptionPackage.ADDITIONAL_LAYER__OPTIONAL:
        fireNotifyChanged(
            new ViewerNotification(notification, notification.getNotifier(), false, true));
        return;
    }
    super.notifyChanged(notification);
  }
 /**
  * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that
  * can be created under this object.
  * <!--
  * begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
   super.collectNewChildDescriptors(newChildDescriptors, object);
 }