{
  "isError" : false,
  "request" : {
    "file" : "payment.ek9",
    "line" : 6,
    "methods" : [ "process", "refund" ],
    "traitName" : "Payment"
  },
  "response" : {
    "conflicts" : [ ],
    "edits" : [ {
      "after" : "\n  defines trait\n    Payment\n\n      process() as abstract\n        -> amount as Float\n        <- rtn as Boolean?\n\n      refund() as abstract\n        -> amount as Float\n        <- rtn as Boolean?\n",
      "endLine" : 14,
      "file" : "payment.ek9",
      "startLine" : 14,
      "type" : "insert"
    }, {
      "after" : "    PaymentProcessor with trait of Payment",
      "before" : "    PaymentProcessor",
      "endLine" : 6,
      "file" : "payment.ek9",
      "startLine" : 6,
      "type" : "replace"
    }, {
      "after" : "      override process()",
      "before" : "      process()",
      "endLine" : 7,
      "file" : "payment.ek9",
      "startLine" : 7,
      "type" : "replace"
    }, {
      "after" : "      override refund()",
      "before" : "      refund()",
      "endLine" : 10,
      "file" : "payment.ek9",
      "startLine" : 10,
      "type" : "replace"
    } ],
    "meta" : {
      "serverMs" : "<timing>"
    },
    "risk" : {
      "crossesModuleBoundary" : false,
      "estimatedSeverity" : "high",
      "fileCount" : 1,
      "lineCount" : 4,
      "touchesPublicApi" : true,
      "touchesTests" : false
    },
    "status" : "applied",
    "summary" : "Extract trait Payment from PaymentProcessor (2 methods)",
    "workspaceHash" : "<workspace-hash>",
    "wouldBeDiagnostics" : [ ],
    "written" : true
  },
  "scenario" : "apply_creates_trait",
  "tool" : "extract_trait"
}
