# Business Logic — FUW00927SFBean.removeElementFromListData() [158 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW00927SF.FUW00927SFBean` |
| Layer | Service Component / View Bean (webview layer — X33 view bean framework) |
| Module | `FUW00927SF` (Package: `eo.web.webview.FUW00927SF`) |

## 1. Role

### FUW00927SFBean.removeElementFromListData()

This method performs **deletion of individual elements from typed data lists** that drive the dynamic rendering of billing-related fields on a telecom service contract screen. It is a **list mutation utility** that routes the removal request to the correct `X33VDataTypeList` — a framework-managed typed list — based on the business identity of the target field, as communicated via a `key` parameter containing Japanese field labels.

The method handles **22 distinct list types**, organized into four conceptual domains: (1) item-level metadata (item code and value), (2) standard monthly fees (regular and total amounts, tax-excluded totals), (3) standard initial one-time fees (regular and total amounts), (4) smart-link discounted variants (discounted monthly fees, discounted initial fees, and their item labels), (5) discount label metadata (period, label name, discount amount, notes for monthly fee discounts), (6) display title fields, and (7) GH (Group/Home) billing variants of monthly and initial fees.

It implements a **routing/dispatch design pattern**: the method does not contain any business logic beyond key-matching and bounds checking — it dispatches removal requests to one of 22 list-specific `ArrayList.remove(index)` calls. When the key begins with `"//"`, it delegates entirely to the superclass implementation, which handles common/shared info screen lists through a base class mechanism.

Its **role in the larger system** is as a shared view-bean mutation method used by screen logic during dynamic UI construction — for example, when toggling between standard and smart-link pricing modes, or when GH (group/home) billing is enabled/disabled, rows must be added or removed from these lists so the Facelets rendering engine displays the correct fields. This method is the delete-side counterpart to `addElementToListData`, enabling bidirectional list manipulation.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["removeElementFromListData(String key, int index)"])

    START --> CHECK_NULL["key is not null?"]

    CHECK_NULL -->|false| END_RETURN["Return immediately (no-op)"]

    CHECK_NULL -->|true| CHECK_COMMENT["key starts with '//'
(Shared Info Screen Flag)"]

    CHECK_COMMENT -->|true| DELEGATE["super.removeElementFromListData(key, index)"]
    DELEGATE --> END_RETURN

    CHECK_COMMENT -->|false| CHECK_KOUMOKU_CD["key equals '項目コード'
(Item Code)"]

    CHECK_KOUMOKU_CD -->|true| BOUNDS_1["index >= 0 AND index < koumoku_code_list.size()?"]
    BOUNDS_1 -->|true| REMOVE_1["koumoku_code_list.remove(index)"]
    BOUNDS_1 -->|false| END_RETURN
    REMOVE_1 --> END_RETURN

    CHECK_KOUMOKU_CD -->|false| CHECK_KOUMOKU_VAL["key equals '値'
(Value)"]
    CHECK_KOUMOKU_VAL -->|true| BOUNDS_2["index >= 0 AND index < koumoku_value_list.size()?"]
    BOUNDS_2 -->|true| REMOVE_2["koumoku_value_list.remove(index)"]
    BOUNDS_2 -->|false| END_RETURN
    REMOVE_2 --> END_RETURN

    CHECK_KOUMOKU_VAL -->|false| CHECK_GETSU_KMK["key equals '月額料金項目'
(Monthly Fee Item)"]
    CHECK_GETSU_KMK -->|true| BOUNDS_3["index >= 0 AND index < getsu_ryokin_kmk_list.size()?"]
    BOUNDS_3 -->|true| REMOVE_3["getsu_ryokin_kmk_list.remove(index)"]
    BOUNDS_3 -->|false| END_RETURN
    REMOVE_3 --> END_RETURN

    CHECK_GETSU_KMK -->|false| CHECK_GETSU_RYOKIN["key equals '月額料金'
(Monthly Fee)"]
    CHECK_GETSU_RYOKIN -->|true| BOUNDS_4["index >= 0 AND index < getsu_ryokin_list.size()?"]
    BOUNDS_4 -->|true| REMOVE_4["getsu_ryokin_list.remove(index)"]
    BOUNDS_4 -->|false| END_RETURN
    REMOVE_4 --> END_RETURN

    CHECK_GETSU_RYOKIN -->|false| CHECK_SHOKI_KMK["key equals '初期費用項目'
(Initial Fee Item)"]
    CHECK_SHOKI_KMK -->|true| BOUNDS_5["index >= 0 AND index < shoki_hiyo_kmk_list.size()?"]
    BOUNDS_5 -->|true| REMOVE_5["shoki_hiyo_kmk_list.remove(index)"]
    BOUNDS_5 -->|false| END_RETURN
    REMOVE_5 --> END_RETURN

    CHECK_SHOKI_KMK -->|false| CHECK_SHOKI_HIYO["key equals '初期費用'
(Initial Fee)"]
    CHECK_SHOKI_HIYO -->|true| BOUNDS_6["index >= 0 AND index < shoki_hiyo_list.size()?"]
    BOUNDS_6 -->|true| REMOVE_6["shoki_hiyo_list.remove(index)"]
    BOUNDS_6 -->|false| END_RETURN
    REMOVE_6 --> END_RETURN

    CHECK_SHOKI_HIYO -->|false| CHECK_GETSU_KEI["key equals '月額料金計'
(Monthly Fee Total)"]
    CHECK_GETSU_KEI -->|true| BOUNDS_7["index >= 0 AND index < getsu_ryokin_kei_list.size()?"]
    BOUNDS_7 -->|true| REMOVE_7["getsu_ryokin_kei_list.remove(index)"]
    BOUNDS_7 -->|false| END_RETURN
    REMOVE_7 --> END_RETURN

    CHECK_GETSU_KEI -->|false| CHECK_GETSU_KEI_ZEI["key equals '月額料金計（税抜）'
(Monthly Fee Total Excl. Tax)"]
    CHECK_GETSU_KEI_ZEI -->|true| BOUNDS_8["index >= 0 AND index < getsu_ryokin_kei_zei_list.size()?"]
    BOUNDS_8 -->|true| REMOVE_8["getsu_ryokin_kei_zei_list.remove(index)"]
    BOUNDS_8 -->|false| END_RETURN
    REMOVE_8 --> END_RETURN

    CHECK_GETSU_KEI_ZEI -->|false| CHECK_SMART_LIST["key matches any of:
- smart link fields
- discount label fields
- display title
- GH billing fields"]
    CHECK_SMART_LIST -->|true| REMOVE_SMART["list.remove(index)
(for matched list)"]
    CHECK_SMART_LIST -->|false| FALLTHROUGH["No matching list
(index out of bounds or unknown key)"]

    REMOVE_SMART --> END_RETURN
    FALLTHROUGH --> END_RETURN

    END_RETURN --> FINISH(["End"])
```

**CRITICAL — Constant Resolution:**

This method does not use external constant files for key comparison. The key values are hardcoded Japanese string literals that serve as **field identifiers**:

| Constant (Hardcoded Key) | Japanese | Business Meaning |
|--------------------------|----------|------------------|
| `"//"` | — | Shared info screen flag — delegates to superclass |
| `"項目コード"` | Item Code | Identifies a row's item code field |
| `"値"` | Value | Identifies a row's value field |
| `"月額料金項目"` | Monthly Fee Item | Identifies a monthly fee item label row |
| `"月額料金"` | Monthly Fee | Identifies a monthly fee amount row |
| `"初期費用項目"` | Initial Fee Item | Identifies an initial fee item label row |
| `"初期費用"` | Initial Fee | Identifies an initial fee amount row |
| `"月額料金計"` | Monthly Fee Total | Identifies the monthly fee subtotal row |
| `"月額料金計（税抜）"` | Monthly Fee Total Excl. Tax | Identifies the tax-excluded monthly fee total row |
| `"月額料金項目（スマートリンク）"` | Monthly Fee Item (Smart Link) | Identifies a smart-link discounted fee item label |
| `"月額料金（スマートリンク）"` | Monthly Fee (Smart Link) | Identifies a smart-link discounted fee amount |
| `"初期費用項目（スマートリンク）"` | Initial Fee Item (Smart Link) | Identifies a smart-link discounted initial fee item |
| `"初期費用（スマートリンク）"` | Initial Fee (Smart Link) | Identifies a smart-link discounted initial fee amount |
| `"月額料金割引文言適用期間"` | Monthly Fee Discount Label Application Period | Discount label validity period |
| `"月額料金割引文言割引名"` | Monthly Fee Discount Label Discount Name | Discount label name |
| `"月額料金割引文言割引額"` | Monthly Fee Discount Label Discount Amount | Discount amount value |
| `"月額料金割引文言備考"` | Monthly Fee Discount Label Notes | Discount label notes |
| `"月額料金表示項目"` | Monthly Fee Display Item | Display item title for monthly fee section |
| `"月額料金項目（GH）"` | Monthly Fee Item (GH) | GH (Group/Home) billing monthly fee item label |
| `"月額料金（GH）"` | Monthly Fee (GH) | GH billing monthly fee amount |
| `"初期費用項目（GH）"` | Initial Fee Item (GH) | GH billing initial fee item label |
| `"初期費用（GH）"` | Initial Fee (GH) | GH billing initial fee amount |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | A **field identifier** that specifies which typed list to remove from. It is a Japanese string literal representing the business label of the field — e.g., `"月額料金"` means the caller wants to remove a row from the monthly fee list. The value `"//"` is a special sentinel meaning the list belongs to the shared info screen, triggering delegation to the superclass. If `key` is `null`, the method is a no-op. |
| 2 | `index` | `int` | The **zero-based position** of the element to remove from the matched list. Must be within the current bounds of the list (`0 <= index < size`) for removal to occur. If out of bounds, the method silently does nothing (no exception thrown). |

**Instance fields read by this method:**

| Field | Type | Usage |
|-------|------|-------|
| `koumoku_code_list` | `X33VDataTypeList` | List of item code values |
| `koumoku_value_list` | `X33VDataTypeList` | List of item value strings |
| `getsu_ryokin_kmk_list` | `X33VDataTypeList` | List of monthly fee item label values |
| `getsu_ryokin_list` | `X33VDataTypeList` | List of monthly fee amount values |
| `shoki_hiyo_kmk_list` | `X33VDataTypeList` | List of initial fee item label values |
| `shoki_hiyo_list` | `X33VDataTypeList` | List of initial fee amount values |
| `getsu_ryokin_kei_list` | `X33VDataTypeList` | List of monthly fee total values |
| `getsu_ryokin_kei_zei_list` | `X33VDataTypeList` | List of monthly fee total (tax-excluded) values |
| `getsu_ryokin_kmk_sml_list` | `X33VDataTypeList` | List of smart-link monthly fee item label values |
| `getsu_ryokin_sml_list` | `X33VDataTypeList` | List of smart-link monthly fee values |
| `shoki_hiyo_kmk_sml_list` | `X33VDataTypeList` | List of smart-link initial fee item label values |
| `shoki_hiyo_sml_list` | `X33VDataTypeList` | List of smart-link initial fee values |
| `gtgk_wrib_mngn_tk_kikan_list` | `X33VDataTypeList` | List of discount label application period values |
| `gtgk_wrib_mngn_wrib_nm_list` | `X33VDataTypeList` | List of discount label name values |
| `gtgk_wrib_mngn_wrib_amnt_list` | `X33VDataTypeList` | List of discount label discount amount values |
| `gtgk_wrib_mngn_biko_list` | `X33VDataTypeList` | List of discount label notes values |
| `getsu_ryokin_kei_title_list` | `X33VDataTypeList` | List of monthly fee display title values |
| `getsu_ryokin_kmk_gh_list` | `X33VDataTypeList` | List of GH billing monthly fee item label values |
| `getsu_ryokin_gh_list` | `X33VDataTypeList` | List of GH billing monthly fee values |
| `shoki_hiyo_kmk_gh_list` | `X33VDataTypeList` | List of GH billing initial fee item label values |
| `shoki_hiyo_gh_list` | `X33VDataTypeList` | List of GH billing initial fee values |

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| D | `FUW00927SFBean.removeElementFromListData(String, int)` | — | — (View Bean only) | Removes an element at the given index from the matched `X33VDataTypeList` in the view bean's in-memory data |

**All method calls within this method:**

| # | CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|---|------|----------|---------|-------------|----------------------|
| 1 | D | `super.removeElementFromListData(String, int)` | — | — (Framework base class) | Delegates to superclass for shared info screen lists when key starts with `"//"` |
| 2 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `koumoku_code_list` |
| 3 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `koumoku_value_list` |
| 4 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_kmk_list` |
| 5 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_list` |
| 6 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `shoki_hiyo_kmk_list` |
| 7 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `shoki_hiyo_list` |
| 8 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_kei_list` |
| 9 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_kei_zei_list` |
| 10 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_kmk_sml_list` (smart link) |
| 11 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_sml_list` (smart link) |
| 12 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `shoki_hiyo_kmk_sml_list` (smart link) |
| 13 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `shoki_hiyo_sml_list` (smart link) |
| 14 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `gtgk_wrib_mngn_tk_kikan_list` (discount label period) |
| 15 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `gtgk_wrib_mngn_wrib_nm_list` (discount label name) |
| 16 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `gtgk_wrib_mngn_wrib_amnt_list` (discount label amount) |
| 17 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `gtgk_wrib_mngn_biko_list` (discount label notes) |
| 18 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_kei_title_list` (monthly fee display title) |
| 19 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_kmk_gh_list` (GH billing item) |
| 20 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `getsu_ryokin_gh_list` (GH billing) |
| 21 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `shoki_hiyo_kmk_gh_list` (GH initial fee item) |
| 22 | D | `X33VDataTypeList.remove(int)` | — | — (In-memory list) | Removes element at index from `shoki_hiyo_gh_list` (GH initial fee) |

**Classification rationale:** Every list operation is a **Delete (D)** — specifically an in-memory list mutation on an `ArrayList`-backed `X33VDataTypeList`. No database operations, no SC/CBS calls, no entity persistence occur within this method. It operates purely at the view-bean level, mutating the data structure that the Facelets UI framework uses to render rows on the screen.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `FUW00927SFBean.removeElementFromListData()` (overloaded variant) | `FUW00927SFBean.removeElementFromListData()` → `FUW00927SFBean.removeElementFromListData(String, int)` | `X33VDataTypeList.remove(int) [D] in-memory list` |

**Notes on caller analysis:**
- The pre-computed code graph shows exactly one direct caller: an overloaded variant of `removeElementFromListData` within the same class (`FUW00927SFBean`), which likely accepts different parameter types (e.g., wrapping the `String`/`int` into a broader API).
- This method is a **private-facing utility** — it is `public` but intended to be called only by other methods within the same bean, not from external screens or batches.
- No screen class (KKSV*) or CBS class directly invokes this method. It is used internally by the bean's own screen lifecycle methods (e.g., during `initialize`, `onLoad`, or `onSubmit` processing) to dynamically adjust the row set of displayed billing fields.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key != null)` (L4903)

> If `key` is `null`, the entire method is a no-op and returns immediately. This is a defensive guard against `NullPointerException` on the subsequent `startsWith` and `equals` calls.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return;` // key is null, exit immediately (implicit) |

**Block 2** — [ELSE] — Shared Info Screen Delegation (L4907)

> If key starts with `"//"`, the list belongs to the shared info screen. Delegation is pushed to the superclass implementation, which handles common/standard screen lists in a base-class data structure.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.startsWith("//")` // Checks if key is shared info screen flag |
| 2 | CALL | `super.removeElementFromListData(key, index)` // Delegate to base class for shared info lists |

**Block 3** — [ELSE-IF] `key.equals("項目コード")` (Item Code) (L4911)

> This block matches when the caller targets the item code list. The `koumoku_code_list` holds `X33VDataTypeStringBean` instances representing item codes for billing rows.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("項目コード")` // Match item code key |
| 2 | IF | `index >= 0 && index < koumoku_code_list.size()` // Bounds check |
| 3 | SET | — // No assignment; proceed to removal if bounds valid |

**Block 3.1** — [nested IF body] — Remove from koumoku_code_list (L4913)

> The specified index is within the list bounds. Remove the element at that position. The comment in Japanese reads: "If the specified index is within the current list range, remove the content at that index." (指定のインデックスが現在のリストの範囲内なら、そのインデックスの内容を削除する)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumoku_code_list.remove(index)` |

**Block 4** — [ELSE-IF] `key.equals("値")` (Value) (L4917)

> Matches the item value list — `koumoku_value_list` holds the actual string values corresponding to each item code row.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("値")` // Match value key |
| 2 | IF | `index >= 0 && index < koumoku_value_list.size()` // Bounds check |

**Block 4.1** — [nested IF body] — Remove from koumoku_value_list (L4919)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumoku_value_list.remove(index)` |

**Block 5** — [ELSE-IF] `key.equals("月額料金項目")` (Monthly Fee Item) (L4923)

> Matches the monthly fee item label list — `getsu_ryokin_kmk_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金項目")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_kmk_list.size()` |

**Block 5.1** — [nested IF body] — Remove from getsu_ryokin_kmk_list (L4925)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_kmk_list.remove(index)` |

**Block 6** — [ELSE-IF] `key.equals("月額料金")` (Monthly Fee) (L4929)

> Matches the monthly fee amount list — `getsu_ryokin_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_list.size()` |

**Block 6.1** — [nested IF body] — Remove from getsu_ryokin_list (L4931)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_list.remove(index)` |

**Block 7** — [ELSE-IF] `key.equals("初期費用項目")` (Initial Fee Item) (L4935)

> Matches the initial fee item label list — `shoki_hiyo_kmk_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("初期費用項目")` |
| 2 | IF | `index >= 0 && index < shoki_hiyo_kmk_list.size()` |

**Block 7.1** — [nested IF body] — Remove from shoki_hiyo_kmk_list (L4937)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `shoki_hiyo_kmk_list.remove(index)` |

**Block 8** — [ELSE-IF] `key.equals("初期費用")` (Initial Fee) (L4941)

> Matches the initial fee amount list — `shoki_hiyo_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("初期費用")` |
| 2 | IF | `index >= 0 && index < shoki_hiyo_list.size()` |

**Block 8.1** — [nested IF body] — Remove from shoki_hiyo_list (L4943)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `shoki_hiyo_list.remove(index)` |

**Block 9** — [ELSE-IF] `key.equals("月額料金計")` (Monthly Fee Total) (L4947)

> Matches the monthly fee total (summed) list — `getsu_ryokin_kei_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金計")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_kei_list.size()` |

**Block 9.1** — [nested IF body] — Remove from getsu_ryokin_kei_list (L4949)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_kei_list.remove(index)` |

**Block 10** — [ELSE-IF] `key.equals("月額料金計（税抜）")` (Monthly Fee Total Excl. Tax) (L4953)

> Matches the tax-excluded monthly fee total list — `getsu_ryokin_kei_zei_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金計（税抜）")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_kei_zei_list.size()` |

**Block 10.1** — [nested IF body] — Remove from getsu_ryokin_kei_zei_list (L4955)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_kei_zei_list.remove(index)` |

**Block 11** — [ELSE-IF] `key.equals("月額料金項目（スマートリンク）")` (Monthly Fee Item — Smart Link) (L4959)

> Matches the smart-link variant monthly fee item list. Smart Link is K-Opticom's promotional pricing program. — `getsu_ryokin_kmk_sml_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金項目（スマートリンク）")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_kmk_sml_list.size()` |

**Block 11.1** — [nested IF body] — Remove from getsu_ryokin_kmk_sml_list (L4961)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_kmk_sml_list.remove(index)` |

**Block 12** — [ELSE-IF] `key.equals("月額料金（スマートリンク）")` (Monthly Fee — Smart Link) (L4965)

> Matches the smart-link discounted monthly fee list — `getsu_ryokin_sml_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金（スマートリンク）")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_sml_list.size()` |

**Block 12.1** — [nested IF body] — Remove from getsu_ryokin_sml_list (L4967)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_sml_list.remove(index)` |

**Block 13** — [ELSE-IF] `key.equals("初期費用項目（スマートリンク）")` (Initial Fee Item — Smart Link) (L4971)

> Matches the smart-link initial fee item list — `shoki_hiyo_kmk_sml_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("初期費用項目（スマートリンク）")` |
| 2 | IF | `index >= 0 && index < shoki_hiyo_kmk_sml_list.size()` |

**Block 13.1** — [nested IF body] — Remove from shoki_hiyo_kmk_sml_list (L4973)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `shoki_hiyo_kmk_sml_list.remove(index)` |

**Block 14** — [ELSE-IF] `key.equals("初期費用（スマートリンク）")` (Initial Fee — Smart Link) (L4977)

> Matches the smart-link initial fee list — `shoki_hiyo_sml_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("初期費用（スマートリンク）")` |
| 2 | IF | `index >= 0 && index < shoki_hiyo_sml_list.size()` |

**Block 14.1** — [nested IF body] — Remove from shoki_hiyo_sml_list (L4979)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `shoki_hiyo_sml_list.remove(index)` |

**Block 15** — [ELSE-IF] `key.equals("月額料金割引文言適用期間")` (Discount Label Application Period) (L4983)

> Matches the discount label validity period list — `gtgk_wrib_mngn_tk_kikan_list`. "GTGK" is the abbreviation for 月額料金割引 (monthly fee discount).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金割引文言適用期間")` |
| 2 | IF | `index >= 0 && index < gtgk_wrib_mngn_tk_kikan_list.size()` |

**Block 15.1** — [nested IF body] — Remove from gtgk_wrib_mngn_tk_kikan_list (L4985)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `gtgk_wrib_mngn_tk_kikan_list.remove(index)` |

**Block 16** — [ELSE-IF] `key.equals("月額料金割引文言割引名")` (Discount Label Name) (L4989)

> Matches the discount label name list — `gtgk_wrib_mngn_wrib_nm_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金割引文言割引名")` |
| 2 | IF | `index >= 0 && index < gtgk_wrib_mngn_wrib_nm_list.size()` |

**Block 16.1** — [nested IF body] — Remove from gtgk_wrib_mngn_wrib_nm_list (L4991)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `gtgk_wrib_mngn_wrib_nm_list.remove(index)` |

**Block 17** — [ELSE-IF] `key.equals("月額料金割引文言割引額")` (Discount Label Amount) (L4995)

> Matches the discount label amount list — `gtgk_wrib_mngn_wrib_amnt_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金割引文言割引額")` |
| 2 | IF | `index >= 0 && index < gtgk_wrib_mngn_wrib_amnt_list.size()` |

**Block 17.1** — [nested IF body] — Remove from gtgk_wrib_mngn_wrib_amnt_list (L4997)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `gtgk_wrib_mngn_wrib_amnt_list.remove(index)` |

**Block 18** — [ELSE-IF] `key.equals("月額料金割引文言備考")` (Discount Label Notes) (L5001)

> Matches the discount label notes list — `gtgk_wrib_mngn_biko_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金割引文言備考")` |
| 2 | IF | `index >= 0 && index < gtgk_wrib_mngn_biko_list.size()` |

**Block 18.1** — [nested IF body] — Remove from gtgk_wrib_mngn_biko_list (L5003)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `gtgk_wrib_mngn_biko_list.remove(index)` |

**Block 19** — [ELSE-IF] `key.equals("月額料金表示項目")` (Monthly Fee Display Item/Title) (L5007)

> Matches the monthly fee section display title list — `getsu_ryokin_kei_title_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金表示項目")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_kei_title_list.size()` |

**Block 19.1** — [nested IF body] — Remove from getsu_ryokin_kei_title_list (L5009)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_kei_title_list.remove(index)` |

**Block 20** — [ELSE-IF] `key.equals("月額料金項目（GH）")` (Monthly Fee Item — GH) (L5013)

> Matches the GH (Group/Home) billing monthly fee item list — `getsu_ryokin_kmk_gh_list`. GH billing refers to bundled billing for multiple lines within a group or household.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金項目（GH）")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_kmk_gh_list.size()` |

**Block 20.1** — [nested IF body] — Remove from getsu_ryokin_kmk_gh_list (L5015)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_kmk_gh_list.remove(index)` |

**Block 21** — [ELSE-IF] `key.equals("月額料金（GH）")` (Monthly Fee — GH) (L5019)

> Matches the GH billing monthly fee list — `getsu_ryokin_gh_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("月額料金（GH）")` |
| 2 | IF | `index >= 0 && index < getsu_ryokin_gh_list.size()` |

**Block 21.1** — [nested IF body] — Remove from getsu_ryokin_gh_list (L5021)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getsu_ryokin_gh_list.remove(index)` |

**Block 22** — [ELSE-IF] `key.equals("初期費用項目（GH）")` (Initial Fee Item — GH) (L5025)

> Matches the GH billing initial fee item list — `shoki_hiyo_kmk_gh_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("初期費用項目（GH）")` |
| 2 | IF | `index >= 0 && index < shoki_hiyo_kmk_gh_list.size()` |

**Block 22.1** — [nested IF body] — Remove from shoki_hiyo_kmk_gh_list (L5027)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `shoki_hiyo_kmk_gh_list.remove(index)` |

**Block 23** — [ELSE-IF] `key.equals("初期費用（GH）")` (Initial Fee — GH) (L5031)

> Matches the GH billing initial fee list — `shoki_hiyo_gh_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.equals("初期費用（GH）")` |
| 2 | IF | `index >= 0 && index < shoki_hiyo_gh_list.size()` |

**Block 23.1** — [nested IF body] — Remove from shoki_hiyo_gh_list (L5033)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `shoki_hiyo_gh_list.remove(index)` |

**Block 24** — [ELSE — implicit fallthrough] — Unknown key or out-of-bounds index (L5035)

> If none of the 22 known keys match, or if a matching key's list has an out-of-bounds index, the method silently returns without any action. No exception is thrown for unknown keys or out-of-bounds indices. This is **silent failure by design** — the caller is expected to only invoke this method with valid key/index pairs. The method is declared to throw `X33SException` but this method body never throws it.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `(implicit) return;` // No matching list or out-of-bounds — silent no-op |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `koumoku_code` | Field | Item code — a unique identifier for each billing line item on the service contract screen |
| `koumoku_value` | Field | Item value — the string value associated with an item code |
| `getsu_ryokin` | Field | Monthly fee — the recurring monthly charge for a telecom service line (月額料金) |
| `getsu_ryokin_kmk` | Field | Monthly fee item — the label/description for a monthly fee line item (月額料金項目) |
| `getsu_ryokin_kei` | Field | Monthly fee total — the summed total of all monthly fee lines (月額料金計) |
| `getsu_ryokin_kei_zei` | Field | Monthly fee total excluding tax — the monthly fee total before consumption tax is applied (月額料金計税抜) |
| `getsu_ryokin_kmk_sml` | Field | Smart-link monthly fee item — the label for a discounted monthly fee under K-Opticom's Smart Link promotional program |
| `getsu_ryokin_sml` | Field | Smart-link monthly fee — the discounted monthly fee amount under Smart Link |
| `shoki_hiyo` | Field | Initial fee — the one-time setup/registration charge for a service (初期費用) |
| `shoki_hiyo_kmk` | Field | Initial fee item — the label for an initial fee line item (初期費用項目) |
| `shoki_hiyo_kmk_sml` | Field | Smart-link initial fee item — the label for a discounted initial fee under Smart Link |
| `shoki_hiyo_sml` | Field | Smart-link initial fee — the discounted one-time setup fee under Smart Link |
| `gtgk_wrib_mngn_tk_kikan` | Field | Discount label application period — the date range during which a discount label is active (月額料金割引文言適用期間) |
| `gtgk_wrib_mngn_wrib_nm` | Field | Discount label name — the display name of a discount (月額料金割引文言割引名) |
| `gtgk_wrib_mngn_wrib_amnt` | Field | Discount label discount amount — the monetary value of the discount (月額料金割引文言割引額) |
| `gtgk_wrib_mngn_biko` | Field | Discount label notes — additional notes on a discount (月額料金割引文言備考) |
| `getsu_ryokin_kei_title` | Field | Monthly fee display item/title — the section heading for the monthly fee display area |
| `getsu_ryokin_kmk_gh` | Field | GH billing monthly fee item — label for a GH (group/home) bundled billing monthly fee (月額料金項目GH) |
| `getsu_ryokin_gh` | Field | GH billing monthly fee — the monthly fee under GH bundled billing (月額料金GH) |
| `shoki_hiyo_kmk_gh` | Field | GH billing initial fee item — label for a GH bundled billing initial fee (初期費用項目GH) |
| `shoki_hiyo_gh` | Field | GH billing initial fee — the one-time setup fee under GH bundled billing (初期費用GH) |
| `X33VDataTypeList` | Type | A framework-managed typed list in the Fujitsu X33 view bean framework. Wraps an `ArrayList` with type-safe bean elements (e.g., `X33VDataTypeStringBean`). Used by Facelets to render dynamic table rows. |
| Smart Link | Business term | K-Opticom's promotional pricing program that provides discounted monthly fees for service lines that qualify based on bundle/contract conditions. |
| GH (Group/Home) | Business term | GH billing (グループ/ホーム課金) — a bundled billing arrangement where multiple service lines within a group or household are invoiced together as a single billing entity. |
| 割引文言 (Wribun) | Field | Discount label/wording — the display text that describes a discount (e.g., "Smart Link 30% Off") shown to the customer on invoices and contract summaries. |
| `X33SException` | Type | Framework exception class from Fujitsu X33. Declared on method signature for potential delegation to superclass, though this method body never throws it. |
| FUW00927SF | Module | Screen module identifier — the service contract billing screen module in the K-Opticom telecom OSS/BSS system. |
