These are all great approaches. Unfortunately I don't believe they work with what I already have in tool validation.  How can I apply the step of validating spatial reference while keeping existing validation in update parameters section?
import arcpy
class ToolValidator(object):
  """Class for validating a tool's parameter values and controlling
  the behavior of the tool's dialog."""
  def __init__(self):
    """Setup arcpy and the list of tool parameters."""
    self.params = arcpy.GetParameterInfo()
    self.fcfield = (None, None)
  def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""
    return
  def updateParameters(self):
    """Modify the values and properties of parameters before internal
    validation is performed.  This method is called whenever a parmater
    has been changed."""
    if self.params[0].value and self.params[1].value:
      fc, col = str(self.params[0].value), str(self.params[1].value)
      if self.fcfield != (fc, col):
        self.fcfield = (fc, col)
        # Get the unique values of the field 'col' in the feature class 'fc'
        unique_values = [str(val) for val in
                            sorted(
                                set(
                                    row.getValue(col)
                                        for row in arcpy.SearchCursor(fc, None, None, col)
                                )
                            )
                        ]
        # Assign the unique_values list to parameters 2 and 3
        self.params[2].filter.list = unique_values
        self.params[3].filter.list = unique_values
    # Set the default values of parameters 2 and 3 to the first item in the list
    if self.params[2].value not in self.params[2].filter.list:
      self.params[2].value = self.params[2].filter.list[0]
    if self.params[3].value not in self.params[3].filter.list:
      if self.params[3].filter.list[0] != self.params[2].value:
        self.params[3].value = self.params[3].filter.list[0]
      else:
        self.params[3].value = self.params[3].filter.list[.1]
  def updateMessages(self):
    """Modify the messages created by internal validation for each tool
    parameter.  This method is called after internal validation."""
    if self.params[2].value == self.params[3].value:
        self.params[3].setErrorMessage("Values cannot be the same")