@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; }