if ( user.getName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL ) || ! enabled || isRootDSELookup )
if ( user.getName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL ) || ! enabled || isRootDSELookup || isSubschemaSubentryLookup )
    public NamingEnumeration search( NextInterceptor next, Name base, Map env, ExprNode filter,                                     SearchControls searchCtls ) throws NamingException    {        Invocation invocation = InvocationStack.getInstance().peek();        ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();        LdapPrincipal user = ctx.getPrincipal();        NamingEnumeration e = next.search( base, env, filter, searchCtls );        boolean isRootDSELookup = base.size() == 0 && searchCtls.getSearchScope() == SearchControls.OBJECT_SCOPE;        if ( user.getName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL ) || ! enabled || isRootDSELookup )        {            return e;        }        AuthorizationFilter authzFilter = new AuthorizationFilter();        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, authzFilter );    }