<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def applyFeatures(self, new_features, conflict="error", missing="error"):
 """ Apply the constrain of the features passed to this instance. .. warning:: Feature instances are only considered, that is, SoftFeatures will be not considered. Args: - new_features(Features):
 features to apply - conflict(str):
 if a property hasn't compatible values/constrains, do: - ``"error"``: raise exception. - ``"ignore"``: nothing. - ``"me"``: preserve the original value. - ``"other"``: set like the passed feature. - missing(str):
 if a property is missing in some side, do: - ``"error"``: raise exception. - ``"ignore"``: nothing. - ``"me"``: preserve the original value. - ``"other"``: set like the passed feature. """


        OPTIONS = ["error", "ignore", "me", "other"]
        assert missing in OPTIONS, "Invalid value in `missing`."
        assert conflict in OPTIONS, "Invalid value in `missing`."

        self0 = self.clone()
        if isinstance(new_features, Features):
            new_features = new_features.features
        for f in new_features:
            self0.addFeature(f, conflict=conflict, missing=missing)
        self.props = self0.props
        return self