anchor.diff:  
       let Match_ext_compile (schema: string) : (Func<ContextDelegate, bool>) =
           let json = (JsonValue.Parse(schema))
  -        let matcher = json|> parseJsonSchema |> CompileExpression;
  -        new Func<ContextDelegate, bool>(fun c-> matcher (ContextOrValue.Context(c.Invoke >> nullProtect)) )
  +        let matcher = json|> parseJsonSchema |> CompileExpression "";
  +        new Func<ContextDelegate, bool>(fun c-> matcher (c.Invoke >> nullProtect))
   
       let Match (schema: JsonValue) (context: Context) : bool =
  -        ContextOrValue.Context(context) |> ( schema |> parseJsonSchema |> CompileExpression)
  +        context |> ( schema |> parseJsonSchema |> CompileExpression "")
       
       let Match_ext (schema: string) (context: ContextDelegate) : bool =
           Match (JsonValue.Parse(schema)) 
  
positive.code:     type Property = string
      
      type Expression = 
              | PropertyExprssion of Property * Expression
              | Not of Expression
              | BinaryExpression of LogicalOp * Expression * Expression
              | CompareExpression of CompareOp * Value
              | Empty
              
      type ContextOrValue = 
              | Context of Context
              | Value of Option<String>
  
      let private parseOp op : Op = match op with
          |"$not" -> Op.LogicalOp(LogicalOp.Not)
  
negative.code: 
      let nullProtect x = match x with |null -> None |_-> Some x;
  
      let (|KeyProperty|Operator|) (input:string) = if input.[0] = '$' then Operator else KeyProperty
  
      let private reducePredicate op seq = if Seq.isEmpty(seq) then true else seq |> Seq.reduce(op)               
  
  