code: public NodeIterator getNodes() throws RepositoryException
     {
        if (SessionImpl.FORCE_USE_GET_NODES_LAZILY)
        {
           if (LOG.isDebugEnabled())
           {
              LOG
                 .debug("EXPERIMENTAL! Be aware that \"getNodesLazily()\" feature is used instead of JCR API getNodes()"
                    + " invocation.To disable this simply cleanup system property \"org.exoplatform.jcr.forceUserGetNodesLazily\""
                    + " and restart JCR.");
           }
           return getNodesLazily();
        }
  
        long start = 0;
        if (LOG.isDebugEnabled())
        {
           start = System.currentTimeMillis();
           LOG.debug("getNodes() >>>>>");
        }
  
        checkValid();
        try
        {
           List<NodeData> childs = childNodesData();
  
           if (childs.size() < session.getLazyReadThreshold())
           {
              // full iterator 
              List<NodeImpl> nodes = new ArrayList<NodeImpl>();
              for (int i = 0, length = childs.size(); i < length; i++)
              {
                 NodeData child = childs.get(i);
                 if (session.getAccessManager().hasPermission(child.getACL(), new String[]{PermissionType.READ},
                    session.getUserState().getIdentity()))
                 {
                    NodeImpl item = (NodeImpl)dataManager.readItem(child, nodeData(), true, false);
                    session.getActionHandler().postRead(item);
                    nodes.add(item);
                 }
              }
              return new EntityCollection(nodes);
           }
           else
           {
              // lazy iterator
              return new LazyNodeIterator(childs);
           }
        }
        finally
        {
           if (LOG.isDebugEnabled())
           {
              LOG.debug("getNodes() <<<<< " + ((System.currentTimeMillis() - start) / 1000d) + "sec");
           }
        }
     }
docs: {@inheritDoc}