return e;
return new SearchResultFilteringEnumeration( e, searchCtls, invocation, topFilter );
    public NamingEnumeration search( NextInterceptor nextInterceptor, LdapDN base, Map env, ExprNode filter,        SearchControls searchCtls ) throws NamingException    {        // check to make sure the DN searched for is a subentry        if ( !subschemaSubentryDn.toNormName().equals( base.toNormName() ) )        {            NamingEnumeration e = nextInterceptor.search( base, env, filter, searchCtls );            if ( searchCtls.getReturningAttributes() != null )            {                return e;            }            Invocation invocation = InvocationStack.getInstance().peek();            return new SearchResultFilteringEnumeration( e, searchCtls, invocation, filters );        }        if ( searchCtls.getSearchScope() == SearchControls.OBJECT_SCOPE && filter instanceof SimpleNode )        {            SimpleNode node = ( SimpleNode ) filter;            // see if node attribute is objectClass            if ( node.getAttribute().equalsIgnoreCase( "2.5.4.0" )                && node.getValue().equalsIgnoreCase( "subschema" ) && node.getAssertionType() == SimpleNode.EQUALITY )            {                // call.setBypass( true );                Attributes attrs = getSubschemaEntry( searchCtls.getReturningAttributes() );                SearchResult result = new SearchResult( base.toString(), null, attrs );                return new SingletonEnumeration( result );            }        }        else if ( searchCtls.getSearchScope() == SearchControls.OBJECT_SCOPE && filter instanceof PresenceNode )        {            PresenceNode node = ( PresenceNode ) filter;            // see if node attribute is objectClass            if ( node.getAttribute().equalsIgnoreCase( "2.5.4.0" ) )            {                // call.setBypass( true );                Attributes attrs = getSubschemaEntry( searchCtls.getReturningAttributes() );                SearchResult result = new SearchResult( base.toString(), null, attrs );                return new SingletonEnumeration( result );            }        }        NamingEnumeration e = nextInterceptor.search( base, env, filter, searchCtls );        if ( searchCtls.getReturningAttributes() != null )        {            return e;        }        Invocation invocation = InvocationStack.getInstance().peek();        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, filters );    }