def _element_constructor_(self, x):
        r"""
        Coerce ``x`` into an element of this function field, possibly not canonically.

        INPUT:

            - ``x`` -- the element

        OUTPUT:

            ``x``, as an element of this function field

        EXAMPLES::

            sage: K.<t> = FunctionField(QQ)
            sage: a = K._element_constructor_(K.maximal_order().gen()); a
            t
            sage: a.parent()
            Rational function field in t over Rational Field

        """
        if x.parent() is self._field:
            return FunctionFieldElement_rational(self, x)
        if isinstance(x, FunctionFieldElement):
            return FunctionFieldElement_rational(self,
                                                 self._field(x.element()))
        if x.parent() is self.polynomial_ring():
            return x[0]
        return FunctionFieldElement_rational(self, self._field(x))
    def _element_constructor_(self, f):
        """
        Make ``f`` into an element of this order.

        EXAMPLES::

            sage: K.<y> = FunctionField(QQ)
            sage: O = K.maximal_order()
            sage: O._element_constructor_(y)
            y
            sage: O._element_constructor_(1/y)
            Traceback (most recent call last):
            ...
            ValueError: `1/y` is not a member of `Maximal order in Rational function field in y over Rational Field`
        """
        if f.parent() is self.fraction_field():
            if not f.denominator() in self.fraction_field(
            ).constant_base_field():
                raise ValueError("`%s` is not a member of `%s`" % (f, self))
            f = f.element()
        from function_field_element import FunctionFieldElement_rational
        return FunctionFieldElement_rational(self, self._ring(f))