case classScalarType[T](name: String, description: Option[String] = None, coerceUserInput: (Any) ⇒ Either[Violation, T], coerceOutput: (T) ⇒ ast.Value, coerceInput: (ast.Value) ⇒ Either[Violation, T], complexity: Double = 0.0D) extends InputType[@@[T, CoercedScalaResult]] with OutputType[T] with LeafType with NullableType with UnmodifiedType with Named with Product with Serializable