{
  "Derive newtype instance": {
    "prefix": "gnderive",
    "description": "Use newtype deriving on any typeclass",
    "body": "derive newtype instance $0 $3 $2"
  },
  "Generate json instances": {
    "prefix": "json",
    "description": "Generate the deriving of the EncodeJson and DecodeJson typeclasses",
    "body": [
      "derive newtype instance EncodeJson $1",
      "derive newtype instance DecodeJson $1"
    ]
  },
  "Generic": {
    "prefix": "dgeneric",
    "description": "Generate the generic instance for a type",
    "body": "derive instance Generic $1 _"
  },
  "Generic Show": {
    "prefix": "gshow",
    "description": "Generate generic show instances",
    "body": [
      "instance Show $1 where",
      "  show = genericShow"
    ]
  },
  "Generic Debug": {
    "prefix": "gdebug",
    "description": "Generate generic debug instances",
    "body": [
      "instance Debug $1 where",
      "  debug = genericDebug"
    ]
  },
  "Generic json": {
    "prefix": "gjson",
    "description": "Generate generic json instances",
    "body": [
      "instance EncodeJson $1 where",
      "  encodeJson = genericEncodeJson",
      "instance DecodeJson $1 where",
      "  decodeJson = genericDecodeJson"
    ]
  },
  "Instance": {
    "prefix": "instance",
    "description": "Declare typeclass instance",
    "body": [
      "instance $2 $3 where",
      "    $0"
    ]
  },
  "Functor": {
    "prefix": "dfunctor",
    "description": "Derive a Functor instance",
    "body": "derive instance Functor $1$0"
  },
  "Eq": {
    "prefix": "deq",
    "description": "Derive an Eq instance",
    "body": "derive instance Eq $1$0"
  },
  "Ord": {
    "prefix": "dord",
    "description": "Derive an Ord instance",
    "body": "derive instance Ord $1$0"
  },
  "Eq & Ord": {
    "prefix": "deqord",
    "description": "Derive an Eq and an Ord instance",
    "body": [
      "derive instance Eq $1",
      "derive instance Ord $1$0"
    ]
  }
}