code: @Transactional
    @Override
    public MutableAcl createAcl(ObjectIdentity objectIdentity) {
      Assert.notNull(objectIdentity, "Object Identity required");
  
      // Need to retrieve the current principal, in order to know who "owns" this ACL
      // (can be changed later on)
      Sid sid = SidUtils.createSecurityContextSid();
  
      try {
        // Create the acl_object_identity row
        createObjectIdentity(objectIdentity, sid);
      } catch (DuplicateKeyException e) {
        throw new AlreadyExistsException("Object identity '" + objectIdentity + "' already exists");
      }
      // Retrieve the ACL via superclass (ensures cache registration, proper retrieval
      // etc)
      Acl acl = readAclById(objectIdentity);
      Assert.isInstanceOf(MutableAcl.class, acl, "MutableAcl should be been returned");
  
      return (MutableAcl) acl;
    }
docs: Same as {@link JdbcMutableAclService#createAcl(ObjectIdentity)} except for duplicate key
  checking which is handled by by the database for performance reasons.