@Override public SimOrgNode update( SimNode rootNode, long timestamp, Message m, List<Message> messageDest ) {
		if( timestamp < nextAutoUpdateTime && !BitAddressUtil.rangesIntersect(m, minId, maxId) ) return this;
		
		for( int i=0; i<childs.length; ++i ) {
			SimNode newChild = childs[i].update( rootNode, timestamp, m, messageDest );
			if( newChild != childs[i] ) {
				// Something changed!
				List<SimNode> newChilds = new ArrayList<SimNode>(childs.length);
				
				for( int j=0; j<i; ++j ) newChilds.add( childs[j] );
				
				if( newChild != null ) newChilds.add(newChild);
				
				for( int j=i+1; j<childs.length; ++j ) {
					if( (newChild = childs[j].update( rootNode, timestamp, m, messageDest )) != null ) {
						newChilds.add(newChild);
					}
				}
				
				return new SimOrgNode(newChilds.toArray(new SimNode[newChilds.size()]));
			}
		}
		return this;
	}