<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _checkEpytext(self, node_type, node, linenoDocstring):
 """ Check epytext of docstring. @param node_type: type of node @param node: current node of pylint @param linenoDocstring: linenumber of docstring """

        if node_type not in ['function', 'method']:
            return
        # Check for arguments.
        # If current node is method,
        # then first argument could not have a epytext markup.
        # The first argument usually named 'self'.
        argnames = (node.argnames()[1:] if node_type == 'method'
                    else node.argnames())

        if _isSetter(node_type, node):
            # For setter methods we remove the `value` argument as it
            # does not need to be documented.
            try:
                argnames.remove('value')
            except ValueError:
                # No `value` in arguments.
                pass

        for argname in argnames:
            if node.name.startswith('opt_'):
                # The docstring for option methods is presented as user-facing
                # documentation.  Avoid requiring epytext in them.
                return
            if not re.search(r"@param\s+%s\s*:" % argname, node.doc):
                self.add_message('W9202', line=linenoDocstring,
                                 node=node, args=argname)
            if not re.search(r"@type\s+%s\s*:" % argname, node.doc):
                self.add_message('W9203', line=linenoDocstring,
                                 node=node, args=argname)

        self._checkReturnValueEpytext(node, linenoDocstring)