separate (Compilation_Unit.Produce_Metrics)
procedure Box_Or_Name (Current_Compilation_Unit : in out Ada_Compilation_Unit;
                       Program_Unit : in Program_Unit_State_Machine;
                       Halstead : in Halstead_State_Machine;
                       Loc : in Loc_State_Machine;
                       Mccabe : in Mccabe_State_Machine) is

    --===================================
    -- Box_Or_Name #::= "<>" | Name
    --===================================

    Current_Token : Token_Package.Token;
    Dummy_Name_Kind : Name_Kind;

begin
    -- Box_Or_Name

    if Token_Package.Value_Of (Peek (From => Current_Compilation_Unit)) =
       Token_Package.Box_Token then

        Get_Next_Token (Out_Token => Current_Token,
                        From => Current_Compilation_Unit,
                        Current_Loc => Loc);

        -- increment Halstead BOX operator count
        Halstead.Store_Operator ((Kind => Halstead_Operator.Box_Halstead));

    else

        Name (Current_Compilation_Unit => Current_Compilation_Unit,
              Program_Unit => Program_Unit,
              Halstead => Halstead,
              Loc => Loc,
              Mccabe => Mccabe,
              Out_Name_Kind => Dummy_Name_Kind);

    end if;

end Box_Or_Name;