anchor.diff:  #r "System.Xml.Linq"
   #load "Prelude.fs"
   #load "XLinq.fs"
  +#load "Constants.fs"
  +#load "ResizeArray.fs"
   open Forge.Prelude
   open Forge.XLinq
  +open Forge
   #else
   module Forge.ProjectSystem
   #endif
   
   open System
  +open System.IO
   open System.Collections.Generic
   open System.Xml
   open System.Xml.Linq
  
positive.code:         }
  
      member self.ToXElem () =
          XElem.create (string self.OnBuild) []
          |> XElem.setAttribute Constants.Include self.Include
          |> mapOpt self.Condition ^ XElem.setAttribute Constants.Condition
          |> mapOpt self.Link      ^ XElem.addElem Constants.Link
  
negative.code: 
  
  type SourceElement =
      | File      of fileName:string
      | Pair      of sigfile:string * modfile:string
      | Directory of dirName:string
  
  //type SourceElement =
  //    | File      of SourceFile
  //    | Pair      of SourcePair
  //    | Directory of SourceElement list
  
  //    member self.ToXElem () : XElement list =
  //        match self with
  //        | File  x       -> [x.ToXElem()]
  //        | Pair  x       -> x.ToXElem()
  //        | Directory (content=x)   -> 
  //            let rec loop acc (srcls:SourceElement list) =
  //                match srcls with
  //                | [] -> acc
  //                | File s::tl -> loop (toXElem s ::acc) tl
  //                | Pair s::tl -> loop (toXElem s @ acc) tl
  //                | Directory (content=s)::tl -> loop ((loop [] s)@acc) tl
  //            loop [] x
  //        
  
  
  type Property<'a> =
  