def METHOD_NAME(fortran_reader):
    ''' Tests for the _copy_full_base_reference utility method. '''
    code = ("subroutine my_sub()\n"
            "  use some_mod, only: my_type\n"
            "  type(my_type) :: var, vars(3)\n"
            "  var%region%subgrid(3)%data(:) = 1.0\n"
            "  vars(1)%region%subgrid(3)%data(:) = 1.0\n"
            "  vars(1)%region%subgrid(:)%data(:) = 1.0\n"
            "  vars(:)%region%subgrid(3)%xstop = 1.0\n"
            "end subroutine my_sub\n")
    psyir = fortran_reader.psyir_from_source(code)
    assignments = psyir.walk(Assignment)
    # var%region%subgrid(3)%data(:)
    assign = assignments[0]
    arg = _copy_full_base_reference(assign.lhs.member.member.member)
    assert arg.member.member.member.name == "data"
    assert isinstance(arg.member.member.member, Member)
    assert not isinstance(arg.member.member.member, ArrayMember)
    # vars(1)%region%subgrid(3)%data(:)
    assign = assignments[1]
    arg = _copy_full_base_reference(assign.lhs.member.member.member)
    assert arg.member.member.member.name == "data"
    assert isinstance(arg.member.member.member, Member)
    assert not isinstance(arg.member.member.member, ArrayMember)
    # vars(1)%region%subgrid(:)%data(:)
    assign = assignments[2]
    # For the first colon
    arg = _copy_full_base_reference(assign.lhs.member.member)
    assert arg.member.member.name == "subgrid"
    assert isinstance(arg.member.member, Member)
    assert not isinstance(arg.member.member, (ArrayMember, StructureMember))
    # For the second colon
    arg = _copy_full_base_reference(assign.lhs.member.member.member)
    assert arg.member.member.member.name == "data"
    assert isinstance(arg.member.member.member, Member)
    assert not isinstance(arg.member.member.member, ArrayMember)
    # vars(:)%region%subgrid(3)%xstop
    assign = assignments[3]
    arg = _copy_full_base_reference(assign.lhs)
    assert arg.symbol.name == "vars"
    assert isinstance(arg, Reference)
    assert not isinstance(arg, ArrayReference)