docs: function(obj, transients, shallow)
  	{
  		shallow = (shallow != null) ? shallow : false;
  		var clone = null;
  		
  		if (obj != null && typeof(obj.constructor) == 'function')
  		{
  			clone = new obj.constructor();
  			
  		    for (var i in obj)
  		    {
  		    	if (i != mxObjectIdentity.FIELD_NAME && (transients == null ||
  		    		mxUtils.indexOf(transients, i) < 0))
  		    	{
  			    	if (!shallow && typeof(obj[i]) == 'object')
  			    	{
  			            clone[i] = mxUtils.clone(obj[i]);
  			        }
  			        else
  			        {
  			            clone[i] = obj[i];
  			        }
  				}
  		    }
  		}
  		
  	    return clone;
  	}