code: func (g *Group) Delete(e *GroupExpr) {
  	fingerprint := e.FingerPrint()
  	equiv, ok := g.Fingerprints[fingerprint]
  	if !ok {
  		return // Can not find the target GroupExpr.
  	}
  
  	g.Equivalents.Remove(equiv)
  	delete(g.Fingerprints, fingerprint)
  
  	operand := GetOperand(equiv.Value.(*GroupExpr).ExprNode)
  	if g.FirstExpr[operand] != equiv {
  		return // The target GroupExpr is not the first Element of the same Operand.
  	}
  
  	nextElem := equiv.Next()
  	if nextElem != nil && GetOperand(nextElem.Value.(*GroupExpr).ExprNode) == operand {
  		g.FirstExpr[operand] = nextElem
  		return // The first Element of the same Operand has been changed.
  	}
  	delete(g.FirstExpr, operand)
  }
docs: // Delete an existing Group expression.