pub fn withdraw(
    transaction_context: &TransactionContext,
    instruction_context: &InstructionContext,
    stake_account_index: usize,
    lamports: u64,
    to_index: usize,
    clock: &Clock,
    stake_history: &StakeHistory,
    withdraw_authority_index: usize,
    custodian_index: Option<usize>,
    feature_set: &FeatureSet
) -> Result<(), InstructionError>