anchor.diff:  open Prime
   open Nu
   
  +/// Allows a value to always pass as equal with another of its same type.
  +/// TODO: move this elsewhere?
  +type [<CustomEquality; NoComparison; Struct>] 'a AlwaysEqual =
  +    | AlwaysEqual of 'a
  +    member this.Value = match this with AlwaysEqual value -> value
  +    override this.GetHashCode () = 0
  +    override this.Equals (that : obj) = that :? AlwaysEqual<'a>
  +
   /// The base component type of an Ecs.
   type Component<'c when 'c : struct and 'c :> 'c Component> =
       interface
           abstract Active : bool with get, set
           end
  -
  -/// Allows a value to always pass as equal with another of its same type.
  -type [<CustomEquality; NoComparison; Struct>] 'a AlwaysEqual =
  -    | AlwaysEqual of 'a
  -    member this.Value = match this with AlwaysEqual value -> value
  -    override this.GetHashCode () = 0
  -    override this.Equals (that : obj) = that :? AlwaysEqual<'a>
   
   /// The component that holds an entity's id.
   type [<NoEquality; NoComparison; Struct>] EntityId =
  
positive.code:         | (Terms terms, Terms terms2) ->
              if terms.Length = terms2.Length then
                  let mutable errOpt = ValueNone
                  let result = List.forall2 (fun term term2 -> match Subquery.ge term term2 with Bool b -> b | Err err -> (errOpt <- ValueSome err; false) | _ -> false) terms terms2
                  match errOpt with ValueSome err -> Err err | ValueNone -> Bool result
              else Bool false
          | ((Err _ as err), _) -> err
          | (_, (Err _ as err)) -> err
          | (_, _) -> Err "Comparing non-comparable terms."
  
      static member lt term term2 =
          match (term, term2) with
  
negative.code:         | (Terms terms, Terms terms2) ->
              if terms.Length = terms2.Length then
                  let mutable errOpt = ValueNone
                  let result = List.forall2 (fun term term2 -> match Subquery.lt term term2 with Bool b -> b | Error err -> (errOpt <- ValueSome err; false) | _ -> false) terms terms2
                  match errOpt with ValueSome err -> Error err | ValueNone -> Bool result
              else Bool false
          | ((Error _ as err), _) -> err
          | (_, (Error _ as err)) -> err
          | (_, _) -> Error "Comparing non-comparable terms."
  
      static member le term term2 =
          match (term, term2) with
  