def METHOD_NAME(self) -> FormationAttackLayout:
    assert self.package.waypoints is not None
    builder = WaypointBuilder(self.flight, self.coalition)
    ingress, target = builder.escort(
        self.package.waypoints.ingress, self.package.target
    )
    ingress.only_for_player = True
    target.only_for_player = True
    hold = None
    if not self.primary_flight_is_air_assault:
        hold = builder.hold(self._hold_point())
    elif self.package.primary_flight is not None:
        fp = self.package.primary_flight.flight_plan
        assert isinstance(fp.METHOD_NAME, AirAssaultLayout)
        assert fp.METHOD_NAME.pickup is not None
        hold = builder.hold(fp.METHOD_NAME.pickup.position)
    join = builder.join(self.package.waypoints.join)
    split = builder.split(self.package.waypoints.split)
    ingress_alt = self.doctrine.ingress_altitude
    initial = builder.escort_hold(
        target.position
        if builder.flight.is_helo
        else self.package.waypoints.initial,
        min(feet(500), ingress_alt) if builder.flight.is_helo else ingress_alt,
    )
    pf = self.package.primary_flight
    if pf and pf.flight_type in [FlightType.AIR_ASSAULT, FlightType.TRANSPORT]:
        METHOD_NAME = pf.flight_plan.METHOD_NAME
        assert isinstance(METHOD_NAME, AirAssaultLayout) or isinstance(
            METHOD_NAME, AirliftLayout
        )
        if isinstance(METHOD_NAME, AirliftLayout):
            join = builder.join(METHOD_NAME.departure.position)
        else:
            join = builder.join(METHOD_NAME.ingress.position)
        if METHOD_NAME.pickup:
            join = builder.join(METHOD_NAME.pickup.position)
        split = builder.split(METHOD_NAME.arrival.position)
        if METHOD_NAME.drop_off:
            initial = builder.escort_hold(
                METHOD_NAME.drop_off.position,
                min(feet(200), ingress_alt)
                if builder.flight.is_helo
                else ingress_alt,
            )
    refuel = None
    if not self.flight.is_helo:
        refuel = builder.refuel(self.package.waypoints.refuel)
    departure = builder.takeoff(self.flight.departure)
    if hold:
        nav_to = builder.nav_path(
            hold.position, join.position, self.doctrine.ingress_altitude
        )
    else:
        nav_to = builder.nav_path(
            departure.position, join.position, self.doctrine.ingress_altitude
        )
    if refuel:
        nav_from = builder.nav_path(
            refuel.position,
            self.flight.arrival.position,
            self.doctrine.ingress_altitude,
        )
    else:
        nav_from = builder.nav_path(
            split.position,
            self.flight.arrival.position,
            self.doctrine.ingress_altitude,
        )
    return FormationAttackLayout(
        departure=departure,
        hold=hold,
        nav_to=nav_to,
        join=join,
        ingress=ingress,
        initial=initial,
        targets=[target],
        split=split,
        refuel=refuel,
        nav_from=nav_from,
        arrival=builder.land(self.flight.arrival),
        divert=builder.divert(self.flight.divert),
        bullseye=builder.bullseye(),
    )