code: func Nil(a Type) bool {
  	switch a := a.(type) {
  	case nil:
  		return true
  	case *Function:
  		for i := range a.args {
  			if Nil(a.args[i]) {
  				return true
  			}
  		}
  		return Nil(a.result)
  	case *Array:
  		for i := range a.static {
  			if Nil(a.static[i]) {
  				return true
  			}
  		}
  		if a.dynamic != nil {
  			return Nil(a.dynamic)
  		}
  	case *Object:
  		for i := range a.static {
  			if Nil(a.static[i].Value) {
  				return true
  			}
  		}
  		if a.dynamic != nil {
  			return Nil(a.dynamic.Key) || Nil(a.dynamic.Value)
  		}
  	case *Set:
  		return Nil(a.of)
  	}
  	return false
  }
docs: // Nil returns true if a's type is unknown.