code: static public DocAndReserved computeDocAndReservedFromDocument(JSONObject doc) throws Exception {
  		DocAndReserved result = new DocAndReserved();
  		
  		result.doc = new JSONObject();
  		result.reserved = new JSONObject();
  
  		if( null != doc ) {
  			Iterator<?> it = doc.keys();
  			while( it.hasNext() ){
  				Object keyObj = it.next();
  				if( keyObj instanceof String ){
  					String key = (String)keyObj;
  					Object value = doc.opt(key);
  					
  					if( key.startsWith("_") ){
  						String effectiveKey = key.substring(1);
  						result.reserved.put(effectiveKey, value);
  					} else {
  						result.doc.put(key, value);
  					}
  				}
  			}
  		}
  		
  		return result;
  	}
docs: Given a JSON document, breaks the document into two parts: the doc and reserved portions.
  @param doc
  @return
  @throws Exception