type t type kind = .. class type implementation = object method parse : string -> (kind, Concepts.Condition.condition) result method eval : kind -> Handle.t list -> within:Handle.t -> (Handle.t, Concepts.Condition.condition) result end val make : #implementation -> Handle.protocol val from : Handle.t -> t Handle.interface option val require : Handle.t -> (t Handle.interface, Concepts.Condition.condition) result val parse : t Handle.interface -> string -> (kind, Concepts.Condition.condition) result val eval : t Handle.interface -> kind -> Handle.t list -> within:Handle.t -> (Handle.t, Concepts.Condition.condition) result