code: void removeShape() {
  		if (m_shape == null)
  			return;
  
  		if (m_geometryIDIndex != -1) {
  			m_shape.removeGeometryUserIndex(m_geometryIDIndex);
  			m_geometryIDIndex = -1;
  		}
  
  		if (m_clusterIndex != -1) {
  			m_shape.removeUserIndex(m_clusterIndex);
  			m_clusterIndex = -1;
  		}
  
  		if (m_halfEdgeIndex != -1) {
  			m_shape.removeUserIndex(m_halfEdgeIndex);
  			m_halfEdgeIndex = -1;
  		}
  
  		if (m_tmpHalfEdgeParentageIndex != -1) {
  			deleteUserIndexForHalfEdges(m_tmpHalfEdgeParentageIndex);
  			m_tmpHalfEdgeParentageIndex = -1;
  		}
  
  		if (m_tmpHalfEdgeWindingNumberIndex != -1) {
  			deleteUserIndexForHalfEdges(m_tmpHalfEdgeWindingNumberIndex);
  			m_tmpHalfEdgeWindingNumberIndex = -1;
  		}
  
  		if (m_tmpHalfEdgeOddEvenNumberIndex != -1) {
  			deleteUserIndexForHalfEdges(m_tmpHalfEdgeOddEvenNumberIndex);
  			m_tmpHalfEdgeOddEvenNumberIndex = -1;
  		}
  		
  		m_shape = null;
  		m_clusterData.deleteAll(true);
  		m_clusterVertices.deleteAll(true);
  		m_firstCluster = -1;
  		m_lastCluster = -1;
  
  		if (m_halfEdgeData != null)
  			m_halfEdgeData.deleteAll(true);
  		if (m_edgeIndices != null)
  			m_edgeIndices.clear();
  		if (m_clusterIndices != null)
  			m_clusterIndices.clear();
  		if (m_chainIndices != null)
  			m_chainIndices.clear();
  		if (m_chainData != null)
  			m_chainData.deleteAll(true);
  		m_universeChain = -1;
  		m_chainAreas = null;
  	}
docs: the edit shape.