anchor.diff:                                    else failwithf "ERROR: loading suffix tree, unable to find file %s" suffixTreePath.Value           
       member x.IsValid(f:string) =
           ensureLoaded()
  -        
  -        match featIndex with
  -            | None -> failwith "Uninitialized GenomeDef instance\n"
  -            | Some(fi) -> fi.ContainsKey(f)   
  +
  +        match features with
  +        | None -> failwith "Uninitialized GenomeDef instance\n"
  +        | Some(feats) -> feats.ContainsKey(f)  
  +         
       interface System.IDisposable with
           member x.Dispose() = match suffixTree with | None -> () | Some(std) -> (std :> System.IDisposable).Dispose()
   
  
positive.code:                         d.Add(kv.Key,(Dna(kv.Value, true, AllowAmbiguousBases)))
                    Some d
                    )
          feats <-  Some(sgd.loadFeatures featsPath)
          
          let i1 = feats.Value |> Array.mapi (fun i f -> f.sysName,i)
          let i2 = feats.Value |> Array.mapi (fun i f -> f.gene,i)
          featIndex <- Array.concat [ i1 ; i2 ] |> Seq.filter (fun (x,_) -> x <> "") |> Map.ofSeq |> Some 
      
      member x.get(g:string) =
          ensureLoaded()
          match featIndex with
              | None -> failwith "Access to unloaded GenomeDef"
              | Some(fi) -> feats.Value.[fi.[g]]
  
      /// Return a list of codons to avoid, if this reference genome has them defined.
      member x.GetCodonAvoid() =
  
negative.code:     /// Return array of all genomic features we have loaded
      member x.GetAllFeats() =
          ensureLoaded()
          features.Value
          |> Map.toSeq
          |> Seq.map snd
          |> Seq.distinct
          |> Array.ofSeq
  
      member x.Dna(errorContext:string,chr:string,l':int<ZeroOffset>,r':int<ZeroOffset>) =
              ensureLoaded()
  