docs: function (dx, dy) {
  
      	    var phynode_id = this.id;
  
  	    // Move box positions.
      	    var assoc_phynodes = get_descendant_phynodes(phynode_id);
      	    for( var si = 0; si < assoc_phynodes.length; si++ ){
  		var mshp = assoc_phynodes[si];
  		mshp.move_y(dy);
  		//ll('mshp['+si+']:'+' oy: '+mshp.start_y+', dy:'+dy);
      	    }
  
  	    // Collect subtree edges for next bit.
  	    var dimmable_subtree = {};
  	    var subtree_edges = get_descendant_connections(phynode_id);
  	    for( var se = 0; se < subtree_edges.length; se++ ){
  		var ste = subtree_edges[se];
  		dimmable_subtree[ste.id] = true;
  	    }
  
  	    // Update connections; keep subtree dimmed while in transit.
              for (var i = connections.length; i--;) {
  		var conn = connections[i];
  		if( dimmable_subtree[conn.id] ){
  		    conn.update('dim');		
  		}else{
  		    conn.update();		
  		}
              }
              paper.safari();
  	}