def METHOD_NAME(self, node_list, options=None):
    # pylint: disable=arguments-renamed
    '''Performs validation checks specific to read-only-based
    transformations.
    :param node_list: the list of Node(s) we are checking.
    :type node_list: list of :py:class:`psyclone.psyir.nodes.Node`
    :param options: a dictionary with options for transformations.
    :type options: Optional[Dict[str, Any]]
    :raises TransformationError: if transformation is applied to a \
                                 Kernel or a BuiltIn call without its \
                                 parent Loop.
    :raises TransformationError: if transformation is applied to a Loop \
                                 without its parent Directive when \
                                 optimisations are applied.
    :raises TransformationError: if transformation is applied to an \
                                 orphaned Directive without its parent \
                                 Directive.
    '''
    # Check ReadOnlyVerifyTrans specific constraints.
    # Check constraints not covered by valid_node_types for
    # individual Nodes in node_list.
    for node in node_list:
        # Check that a ReadOnlyVerifyNode is not inserted between a Loop
        # and its parent Directive when optimisations are applied, as
        # this may result in including the end Directive for verification
        # but not the beginning.
        if isinstance(node, Loop) and isinstance(node.parent, Schedule) \
           and isinstance(node.parent.parent, Directive):
            raise TransformationError(
                f"Error in {self.name}: Application to a Loop without its "
                f"parent Directive is not allowed.")
        # Check that the ReadOnlyVerifyNode is not inserted within a
        # thread parallel region when optimisations are applied.
        if node.ancestor((OMPParallelDirective, ACCParallelDirective)):
            raise TransformationError(
                f"Error in {self.name}: Application to Nodes enclosed "
                f"within a thread-parallel region is not allowed.")
    # Performs validation checks specific to PSyData-based
    # transformations.
    super().METHOD_NAME(node_list, options)