-- schema.json --
{
  "type": "object",

  "properties": {
    "constant":  { "const": 2 },
    "several": {
      "enum": [ 1, 2, 3, 4 ]
    },
    "inclusive": {
        "type": "number",
        "minimum": 2,
        "maximum": 3
    },
    "exclusive": {
        "type": "integer",
        "exclusiveMinimum": 2,
        "exclusiveMaximum": 3
    },
    "multi": {
        "type": [ "integer", "string" ],
        "minimum": 2,
        "maximum": 3,
        "maxLength": 5
    },
    "legacy": {
        "type": "number",
        "exclusiveMinimum": true,
        "minimum": 2,
        "exclusiveMaximum": true,
        "maximum": 3
    },
    "cents": {
      "type": "number",
      "multipleOf": 0.05
    }
  },
  "additionalProperties": false
}
-- out/decode/extract --
import (
	"strings"
	"math"
)

close({
	constant?:  2
	several?:   1 | 2 | 3 | 4
	inclusive?: >=2 & <=3
	exclusive?: int & >2 & <3
	multi?:     int & >=2 & <=3 | strings.MaxRunes(5)
	legacy?:    >2 & <3
	cents?:     math.MultipleOf(0.05)
})
