Pred
case class Pred[Node, Err, Evidence](name: String)(pred: Node => CheckVal[Node, Err, Evidence]) extends NodeShape[Node, Nothing, Err, Evidence]
Constraint on nodes (it has a name and a predicate).
Note: pred is defined in the 2nd parameter section to avoid equality and hashing of functions
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any