anchor.diff:  
   * It then invokes the `GoCardlessPlugin#buildFormDescriptor` method
   
  -
   ==== Step 9 - Deployment
   
   The GoCardless plugin can be built and deployed as per the instructions specified https://docs.killbill.io/latest/plugin_development.html#_development[here]
  
positive.code: 
  . The client application invokes the `GoCardlessPlugin#buildFormDescriptor` method with a *success page URL*
  
  . The `GoCarldessPlugin#buildFormDescriptor` method initiates the GoCardless redirect flow as explained https://developer.gocardless.com/getting-started/api/adding-your-first-customer/[here] and obtains the *redirect URL* which is returned to the client application
  
  . The client application redirects the user to this URL and the user sets up the mandate manually on this page
  
  . GoCardless redirects the user to the *success page*. This invokes the `GoCarldessPlugin#addPaymentMethod`
  
  . The `GoCarldessPlugin#addPaymentMethod` completes the redirect flow as explained https://developer.gocardless.com/getting-started/api/adding-your-first-customer/[here] and obtains the *mandate id* which is saved in the Kill Bill database
  
  . The client application can then invoke `GoCarldessPlugin#purchasePayment`. This charges the customer against the saved *mandate id*  as explained https://developer.gocardless.com/getting-started/api/taking-your-first-payment/[here]
  
  
negative.code: |Returns a `PluginProperty` List. This can be used to return plugin specific properties to the client API 
  |===
  
  It is very important to correctly populate the https://github.com/killbill/killbill-api/blob/4ae1c343a593de937415e21feecb9f5405037fa3/src/main/java/org/killbill/billing/payment/plugin/api/PaymentPluginStatus.java[PaymentPluginStatus]  in the `PaymentTransactionInfoPlugin` object. The following table elaborates how the status should be populated:
  
  |===
  |Status | Status Description
  