protected synchronized boolean insert(SCollisionObject collisionObject){
		if(collisionObject == null)
			return false;
		
		if(!contains(collisionObject)){
			if(getParentNode() != null)
				return getParentNode().insert(collisionObject);
			
			System.err.println("QuadTreeNode.root : CollisionObject "+collisionObject.toString()+" out of mapBound");
			outOfMapList.add(collisionObject);
			return false;
		}
		
		if(collisionObjectList.size() != 0 || hasChildNodes()){
			iniChildren();
			
			for(int i = 0; i < collisionObjectList.size(); i++)
				insertToChildNodes(collisionObjectList.get(i));
			
			if(insertToChildNodes(collisionObject))
				return true;
		}
				
		return addToList(collisionObject, this);
	}