diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37b8b35..4b7f83b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,9 @@ Modifications by (in alphabetical order):
 * P. Vitt, University of Siegen, Germany
 * A. Voysey, UK Met Office
 
+15/05/2023 PR #415 for #165. Bug fix for spurious matching of 'NAMELIST' in
+           certain contexts.
+
 15/05/2023 PR #408 for #403. Add support for the F2008 DO CONCURRENT.
 
 26/04/2023 PR #406 for #405. Add support for F2008 optional "::" in PROCEDURE
diff --git a/src/fparser/two/Fortran2003.py b/src/fparser/two/Fortran2003.py
index d303d69..3f93fd2 100644
--- a/src/fparser/two/Fortran2003.py
+++ b/src/fparser/two/Fortran2003.py
@@ -4651,15 +4651,12 @@ class Letter_Spec(Base):  # R551
 
 class Namelist_Stmt(StmtBase):  # R552
     """
-    ::
-
-        <namelist-stmt> = NAMELIST / <namelist-group-name> /
-            <namelist-group-object-list> [ [ , ] / <namelist-group-name> /
-            <namelist-group-object-list> ]...
+    Fortran 2003 rule R552::
 
-    Attributes::
-
-        items : (Namelist_Group_Name, Namelist_Group_Object_List)-tuple
+        namelist-stmt is NAMELIST
+                         / namelist-group-name / namelist-group-object-list
+                         [ [,] / namelist-group-name /
+                         namelist-group-object-list ] ...
 
     """
 
@@ -4668,28 +4665,46 @@ class Namelist_Stmt(StmtBase):  # R552
 
     @staticmethod
     def match(string):
-        if string[:8].upper() != "NAMELIST":
-            return
-        line = string[8:].lstrip()
+        """Implements the matching for a Namelist_Stmt.
+
+        :param str string: a string containing the code to match.
+
+        :returns: `None` if there is no match, otherwise a `tuple` \
+            containing 2-tuples with a namelist name and a namelist object \
+            list.
+        :rtype: Optional[Tuple[Tuple[ \
+            fparser.two.Fortran2003.Namelist_Group_Name, \
+            fparser.two.Fortran2003.Namelist_Group_Object_List]]]
+
+        """
+        line = string.lstrip()
+        if line[:8].upper() != "NAMELIST":
+            return None
+        line = line[8:].lstrip()
+        if not line:
+            return None
         parts = line.split("/")
+        text_before_slash = parts.pop(0)
+        if text_before_slash:
+            return None
         items = []
-        fst = parts.pop(0)
-        assert not fst, repr((fst, parts))
         while len(parts) >= 2:
-            name, lst = parts[:2]
-            del parts[:2]
-            name = name.strip()
-            lst = lst.strip()
+            name = parts.pop(0).strip()
+            lst = parts.pop(0).strip()
             if lst.endswith(","):
                 lst = lst[:-1].rstrip()
             items.append((Namelist_Group_Name(name), Namelist_Group_Object_List(lst)))
-        assert not parts, repr(parts)
+        if parts:
+            # There is a missing second '/'
+            return None
         return tuple(items)
 
     def tostr(self):
-        return "NAMELIST " + ", ".join(
-            "/%s/ %s" % (name_lst) for name_lst in self.items
-        )
+        """
+        :returns: this Namelist_Stmt as a string.
+        :rtype: str
+        """
+        return "NAMELIST " + ", ".join(f"/{name}/ {lst}" for name, lst in self.items)
 
 
 class Namelist_Group_Object(Base):  # R553

diff --git a/src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py b/src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py
new file mode 100644
index 0000000..bdedf82
--- /dev/null
+++ b/src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py
@@ -0,0 +1,88 @@
+# Copyright (c) 2023 Science and Technology Facilities Council.
+
+# All rights reserved.
+
+# Modifications made as part of the fparser project are distributed
+# under the following license:
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Test Fortran 2003 rule R552 : This file tests the support for the
+NAMELIST statement.
+
+"""
+import pytest
+
+from fparser.two.Fortran2003 import Namelist_Stmt
+from fparser.two.utils import NoMatchError
+
+
+@pytest.mark.parametrize(
+    "code",
+    [
+        "",
+        "namelost",
+        "namelist",
+        "namelist x",
+        "namelist x/",
+        "namelist /x",
+        "namelist /x/ y /",
+    ],
+)
+def test_match_errors(code):
+    """Test that the match method returns None when the supplied code is
+    invalid. Also check that this results in a NoMatchError for an
+    instance of the class.
+
+    """
+    assert not Namelist_Stmt.match(code)
+    with pytest.raises(NoMatchError):
+        _ = Namelist_Stmt(code)
+
+
+def test_simple():
+    """Test that a namelist with a single name and list is matched and
+    that the tostr() method outputs the resultant code as
+    expected. Also check that the namelist keyword matching is case
+    insensitive and that leading and trailing spaces are supported.
+
+    """
+    result = Namelist_Stmt(" NamelisT /x/ a ")
+    assert isinstance(result, Namelist_Stmt)
+    assert result.tostr() == "NAMELIST /x/ a"
+
+
+def test_multi():
+    """Test that multiple names and lists are matched, with and without a
+    comma separator and that the tostr() method outputs the resultant
+    code as expected.
+
+    """
+    result = Namelist_Stmt("namelist /x/ a, /y/ b,c /z/ d")
+    assert isinstance(result, Namelist_Stmt)
+    assert result.tostr() == "NAMELIST /x/ a, /y/ b, c, /z/ d"
diff --git a/src/fparser/two/tests/test_fortran2003.py b/src/fparser/two/tests/test_fortran2003.py
index fc75b86..0ee3529 100644
--- a/src/fparser/two/tests/test_fortran2003.py
+++ b/src/fparser/two/tests/test_fortran2003.py
@@ -1394,16 +1394,6 @@ def test_letter_spec():  # R551
     assert str(obj) == "D"
 
 
-def test_namelist_stmt():  # R552
-    tcls = Namelist_Stmt
-    obj = tcls("namelist / nlist / a")
-    assert isinstance(obj, tcls), repr(obj)
-    assert str(obj) == "NAMELIST /nlist/ a"
-
-    obj = tcls("namelist / nlist / a, /mlist/ b,c /klist/ d,e")
-    assert str(obj) == "NAMELIST /nlist/ a, /mlist/ b, c, /klist/ d, e"
-
-
 def test_equivalence_stmt():  # R554
     tcls = Equivalence_Stmt
     obj = tcls("equivalence (a, b ,z)")

namelist false match error
The f2003 namelist match rule r552 produces an assertion error when a variable starting with the name `namelist' is initialised ...

```
program test
  NamelistFile = "dummy file"
end program
```
src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py::test_match_errors[namelist] src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py::test_match_errors[namelist src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py::test_simple
src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py::test_match_errors[] src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py::test_match_errors[namelost] src/fparser/two/tests/fortran2003/test_namelist_stmt_r552.py::test_multi src/fparser/two/tests/test_fortran2003.py::test_specification_part src/fparser/two/tests/test_fortran2003.py::test_constant src/fparser/two/tests/test_fortran2003.py::test_literal_constant src/fparser/two/tests/test_fortran2003.py::test_type_param_value src/fparser/two/tests/test_fortran2003.py::test_intrinsic_type_spec src/fparser/two/tests/test_fortran2003.py::test_signed_int_literal_constant src/fparser/two/tests/test_fortran2003.py::test_int_literal_constant src/fparser/two/tests/test_fortran2003.py::test_binary_constant src/fparser/two/tests/test_fortran2003.py::test_octal_constant src/fparser/two/tests/test_fortran2003.py::test_hex_constant src/fparser/two/tests/test_fortran2003.py::test_signed_real_literal_constant src/fparser/two/tests/test_fortran2003.py::test_real_literal_constant src/fparser/two/tests/test_fortran2003.py::test_char_selector src/fparser/two/tests/test_fortran2003.py::test_complex_literal_constant src/fparser/two/tests/test_fortran2003.py::test_type_name src/fparser/two/tests/test_fortran2003.py::test_length_selector src/fparser/two/tests/test_fortran2003.py::test_char_length src/fparser/two/tests/test_fortran2003.py::test_logical_literal_constant src/fparser/two/tests/test_fortran2003.py::test_type_attr_spec src/fparser/two/tests/test_fortran2003.py::test_end_type_stmt src/fparser/two/tests/test_fortran2003.py::test_sequence_stmt src/fparser/two/tests/test_fortran2003.py::test_type_param_def_stmt src/fparser/two/tests/test_fortran2003.py::test_type_param_decl src/fparser/two/tests/test_fortran2003.py::test_type_param_attr_spec src/fparser/two/tests/test_fortran2003.py::test_component_attr_spec src/fparser/two/tests/test_fortran2003.py::test_component_decl src/fparser/two/tests/test_fortran2003.py::test_proc_component_def_stmt src/fparser/two/tests/test_fortran2003.py::test_private_components_stmt src/fparser/two/tests/test_fortran2003.py::test_type_bound_procedure_part src/fparser/two/tests/test_fortran2003.py::test_proc_binding_stmt src/fparser/two/tests/test_fortran2003.py::test_generic_binding src/fparser/two/tests/test_fortran2003.py::test_final_binding src/fparser/two/tests/test_fortran2003.py::test_derived_type_spec src/fparser/two/tests/test_fortran2003.py::test_type_param_spec src/fparser/two/tests/test_fortran2003.py::test_type_param_spec_list src/fparser/two/tests/test_fortran2003.py::test_structure_constructor src/fparser/two/tests/test_fortran2003.py::test_component_spec src/fparser/two/tests/test_fortran2003.py::test_component_spec_list src/fparser/two/tests/test_fortran2003.py::test_enum_def src/fparser/two/tests/test_fortran2003.py::test_enum_def_stmt src/fparser/two/tests/test_fortran2003.py::test_array_constructor src/fparser/two/tests/test_fortran2003.py::test_ac_spec src/fparser/two/tests/test_fortran2003.py::test_ac_value_list src/fparser/two/tests/test_fortran2003.py::test_ac_implied_do src/fparser/two/tests/test_fortran2003.py::test_ac_implied_do_control src/fparser/two/tests/test_fortran2003.py::test_declaration_type_spec src/fparser/two/tests/test_fortran2003.py::test_attr_spec src/fparser/two/tests/test_fortran2003.py::test_dimension_attr_spec src/fparser/two/tests/test_fortran2003.py::test_intent_attr_spec src/fparser/two/tests/test_fortran2003.py::test_target_entity_decl src/fparser/two/tests/test_fortran2003.py::test_access_spec src/fparser/two/tests/test_fortran2003.py::test_language_binding_spec src/fparser/two/tests/test_fortran2003.py::test_explicit_shape_spec src/fparser/two/tests/test_fortran2003.py::test_upper_bound src/fparser/two/tests/test_fortran2003.py::test_assumed_shape_spec src/fparser/two/tests/test_fortran2003.py::test_deferred_shape_spec src/fparser/two/tests/test_fortran2003.py::test_assumed_size_spec src/fparser/two/tests/test_fortran2003.py::test_access_stmt src/fparser/two/tests/test_fortran2003.py::test_data_stmt src/fparser/two/tests/test_fortran2003.py::test_data_stmt_set src/fparser/two/tests/test_fortran2003.py::test_data_implied_do src/fparser/two/tests/test_fortran2003.py::test_dimension_stmt src/fparser/two/tests/test_fortran2003.py::test_intent_stmt src/fparser/two/tests/test_fortran2003.py::test_optional_stmt src/fparser/two/tests/test_fortran2003.py::test_parameter_stmt src/fparser/two/tests/test_fortran2003.py::test_named_constant_def src/fparser/two/tests/test_fortran2003.py::test_pointer_stmt src/fparser/two/tests/test_fortran2003.py::test_pointer_decl src/fparser/two/tests/test_fortran2003.py::test_protected_stmt src/fparser/two/tests/test_fortran2003.py::test_save_stmt src/fparser/two/tests/test_fortran2003.py::test_saved_entity src/fparser/two/tests/test_fortran2003.py::test_target_stmt src/fparser/two/tests/test_fortran2003.py::test_value_stmt src/fparser/two/tests/test_fortran2003.py::test_volatile_stmt src/fparser/two/tests/test_fortran2003.py::test_implicit_stmt src/fparser/two/tests/test_fortran2003.py::test_implicit_spec src/fparser/two/tests/test_fortran2003.py::test_letter_spec src/fparser/two/tests/test_fortran2003.py::test_equivalence_stmt src/fparser/two/tests/test_fortran2003.py::test_common_stmt src/fparser/two/tests/test_fortran2003.py::test_common_block_object src/fparser/two/tests/test_fortran2003.py::test_substring src/fparser/two/tests/test_fortran2003.py::test_substring_range src/fparser/two/tests/test_fortran2003.py::test_part_ref src/fparser/two/tests/test_fortran2003.py::test_type_param_inquiry src/fparser/two/tests/test_fortran2003.py::test_array_section src/fparser/two/tests/test_fortran2003.py::test_section_subscript src/fparser/two/tests/test_fortran2003.py::test_section_subscript_list src/fparser/two/tests/test_fortran2003.py::test_subscript_triplet src/fparser/two/tests/test_fortran2003.py::test_allocate_stmt src/fparser/two/tests/test_fortran2003.py::test_alloc_opt src/fparser/two/tests/test_fortran2003.py::test_nullify_stmt src/fparser/two/tests/test_fortran2003.py::test_deallocate_stmt src/fparser/two/tests/test_fortran2003.py::test_level_1_expr src/fparser/two/tests/test_fortran2003.py::test_mult_operand src/fparser/two/tests/test_fortran2003.py::test_level_2_expr src/fparser/two/tests/test_fortran2003.py::test_level_2_unary_expr src/fparser/two/tests/test_fortran2003.py::test_level_3_expr src/fparser/two/tests/test_fortran2003.py::test_level_4_expr src/fparser/two/tests/test_fortran2003.py::test_and_operand src/fparser/two/tests/test_fortran2003.py::test_or_operand src/fparser/two/tests/test_fortran2003.py::test_equiv_operand src/fparser/two/tests/test_fortran2003.py::test_level_5_expr src/fparser/two/tests/test_fortran2003.py::test_expr src/fparser/two/tests/test_fortran2003.py::test_logical_initialization_expr src/fparser/two/tests/test_fortran2003.py::test_assignment_stmt src/fparser/two/tests/test_fortran2003.py::test_pointer_assignment_stmt src/fparser/two/tests/test_fortran2003.py::test_proc_component_ref src/fparser/two/tests/test_fortran2003.py::test_where_stmt src/fparser/two/tests/test_fortran2003.py::test_where_construct_stmt src/fparser/two/tests/test_fortran2003.py::test_forall_construct src/fparser/two/tests/test_fortran2003.py::test_forall_triplet_spec src/fparser/two/tests/test_fortran2003.py::test_if_nonblock_do src/fparser/two/tests/test_fortran2003.py::test_case_selector src/fparser/two/tests/test_fortran2003.py::test_select_type_stmt src/fparser/two/tests/test_fortran2003.py::test_type_guard_stmt src/fparser/two/tests/test_fortran2003.py::test_label_do_stmt src/fparser/two/tests/test_fortran2003.py::test_continue_stmt src/fparser/two/tests/test_fortran2003.py::test_stop_stmt src/fparser/two/tests/test_fortran2003.py::test_io_unit src/fparser/two/tests/test_fortran2003.py::test_read_stmt src/fparser/two/tests/test_fortran2003.py::test_print_stmt src/fparser/two/tests/test_fortran2003.py::test_format src/fparser/two/tests/test_fortran2003.py::test_io_implied_do src/fparser/two/tests/test_fortran2003.py::test_io_implied_do_control src/fparser/two/tests/test_fortran2003.py::test_wait_stmt src/fparser/two/tests/test_fortran2003.py::test_wait_spec src/fparser/two/tests/test_fortran2003.py::test_backspace_stmt src/fparser/two/tests/test_fortran2003.py::test_endfile_stmt src/fparser/two/tests/test_fortran2003.py::test_rewind_stmt src/fparser/two/tests/test_fortran2003.py::test_position_spec src/fparser/two/tests/test_fortran2003.py::test_flush_stmt src/fparser/two/tests/test_fortran2003.py::test_flush_spec src/fparser/two/tests/test_fortran2003.py::test_inquire_stmt src/fparser/two/tests/test_fortran2003.py::test_inquire_spec src/fparser/two/tests/test_fortran2003.py::test_inquire_spec_list src/fparser/two/tests/test_fortran2003.py::test_open_stmt src/fparser/two/tests/test_fortran2003.py::test_connect_spec src/fparser/two/tests/test_fortran2003.py::test_connect_spec_list src/fparser/two/tests/test_fortran2003.py::test_format_stmt src/fparser/two/tests/test_fortran2003.py::test_format_specification src/fparser/two/tests/test_fortran2003.py::test_format_item src/fparser/two/tests/test_fortran2003.py::test_data_edit_desc src/fparser/two/tests/test_fortran2003.py::test_format_item_list src/fparser/two/tests/test_fortran2003.py::test_main_program0 src/fparser/two/tests/test_fortran2003.py::test_invalid_main_program0 src/fparser/two/tests/test_fortran2003.py::test_module src/fparser/two/tests/test_fortran2003.py::test_module_subprogram_part src/fparser/two/tests/test_fortran2003.py::test_module_nature src/fparser/two/tests/test_fortran2003.py::test_interface_block src/fparser/two/tests/test_fortran2003.py::test_interface_specification src/fparser/two/tests/test_fortran2003.py::test_interface_stmt src/fparser/two/tests/test_fortran2003.py::test_end_interface_stmt src/fparser/two/tests/test_fortran2003.py::test_interface_body src/fparser/two/tests/test_fortran2003.py::test_subroutine_body src/fparser/two/tests/test_fortran2003.py::test_function_body src/fparser/two/tests/test_fortran2003.py::test_procedure_stmt src/fparser/two/tests/test_fortran2003.py::test_generic_spec src/fparser/two/tests/test_fortran2003.py::test_dtio_generic_spec src/fparser/two/tests/test_fortran2003.py::test_import_stmt src/fparser/two/tests/test_fortran2003.py::test_external_stmt src/fparser/two/tests/test_fortran2003.py::test_procedure_declaration_stmt src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[private-Access_Spec-PRIVATE] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[public-Access_Spec-PUBLIC] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[bind(c)-Language_Binding_Spec-BIND(C)] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[bind(c, src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[intent(in)-Proc_Attr_Spec-INTENT(IN)] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[intent(out)-Proc_Attr_Spec-INTENT(OUT)] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[intent(inout)-Proc_Attr_Spec-INTENT(INOUT)] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[optional-Proc_Attr_Spec-OPTIONAL] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[pointer-Proc_Attr_Spec-POINTER] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[protected-Proc_Attr_Spec-PROTECTED] src/fparser/two/tests/test_fortran2003.py::test_proc_attr_spec[save-Proc_Attr_Spec-SAVE] src/fparser/two/tests/test_fortran2003.py::test_proc_decl src/fparser/two/tests/test_fortran2003.py::test_intrinsic_stmt src/fparser/two/tests/test_fortran2003.py::test_function_reference src/fparser/two/tests/test_fortran2003.py::test_call_stmt src/fparser/two/tests/test_fortran2003.py::test_procedure_designator src/fparser/two/tests/test_fortran2003.py::test_actual_arg_spec src/fparser/two/tests/test_fortran2003.py::test_actual_arg_spec_list src/fparser/two/tests/test_fortran2003.py::test_alt_return_spec src/fparser/two/tests/test_fortran2003.py::test_function_subprogram src/fparser/two/tests/test_fortran2003.py::test_function_stmt src/fparser/two/tests/test_fortran2003.py::test_dummy_arg_name src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[integer-Intrinsic_Type_Spec-INTEGER] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[integer src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[real-Intrinsic_Type_Spec-REAL] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[double src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[complex-Intrinsic_Type_Spec-COMPLEX] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[character-Intrinsic_Type_Spec-CHARACTER] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[logical-Intrinsic_Type_Spec-LOGICAL] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[type(foo)-Declaration_Type_Spec-TYPE(foo)] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[class(bar)-Declaration_Type_Spec-CLASS(bar)] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[class(*)-Declaration_Type_Spec-CLASS(*)] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[elemental-Prefix_Spec-ELEMENTAL] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[impure-Prefix_Spec-IMPURE] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[module-Prefix_Spec-MODULE] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[pure-Prefix_Spec-PURE] src/fparser/two/tests/test_fortran2003.py::test_prefix_spec[recursive-Prefix_Spec-RECURSIVE] src/fparser/two/tests/test_fortran2003.py::test_suffix src/fparser/two/tests/test_fortran2003.py::test_end_function_stmt src/fparser/two/tests/test_fortran2003.py::test_subroutine_subprogram src/fparser/two/tests/test_fortran2003.py::test_subroutine_stmt src/fparser/two/tests/test_fortran2003.py::test_dummy_arg src/fparser/two/tests/test_fortran2003.py::test_end_subroutine_stmt src/fparser/two/tests/test_fortran2003.py::test_entry_stmt src/fparser/two/tests/test_fortran2003.py::test_return_stmt src/fparser/two/tests/test_fortran2003.py::test_contains