protected function cullForGateway(&$fields, $defaults = array())
    {
        if (!$this->gateway) {
            return;
        }

        $selected = array_merge($defaults, GatewayInfo::requiredFields($this->gateway));
        foreach ($fields as $name => $field) {
            if (!in_array($name, $selected)) {
                unset($fields[$name]);
            }
        }
    }