@Override
  public boolean isValidValue(Object value) {
    Object adaptedValue = getAdaptedValue(value);
    if (adaptedValue instanceof EObject) {
      // We cannot create objects in a read-only object
      if (EMFHelper.isReadOnly((EObject) adaptedValue)) {
        return false;
      }

      // We need at least one valid containment reference to store this
      // type of object
      for (EReference reference : ((EObject) adaptedValue).eClass().getEAllReferences()) {
        if (reference.isContainment()
            && EMFHelper.isSubclass(this.type, reference.getEReferenceType())) {
          return true;
        }
      }
    }
    return false;
  }