specify :: Mixin (SpecFn OvertonFD)
specify s t edge = case (debug ("overton-specify("++(show edge)++")") edge) of
  EGEdge { egeCons = EGChannel, egeLinks = EGTypeData { intData=[i], boolData=[b] } } -> 
    ([(1000,b,True,do
      s <- getIntSpec i
      case s of
        Just ss -> return $ SpecResSpec ((),return (ss,Nothing))
        _ -> return SpecResNone
     )],[(1000,i,True,do
      s <- getBoolSpec b
      case s of
        Just ss -> return $ SpecResSpec ((),return (ss,Nothing))
        _ -> return SpecResNone
     )],[])
  _ -> s edge

-- process :: Mixin (EGEdge -> FDInstance OvertonFD ())
specify :: Mixin (SpecFn OvertonFD)
specify s t edge = case (debug ("overton-specify("++(show edge)++")") edge) of
  EGEdge { egeCons = EGChannel, egeLinks = EGTypeData { intData=[i], boolData=[b] } } -> 
    ([(1000,b,True,do
      s <- getIntSpec i
      case s of
        Just ss -> return $ SpecResSpec ((),return (ss,Nothing))
        _ -> return SpecResNone
     )],[(1000,i,True,do
      s <- getBoolSpec b
      case s of
        Just ss -> return $ SpecResSpec ((),return (ss,Nothing))
        _ -> return SpecResNone
     )],[])
  _ -> s edge

-- process :: Mixin (EGEdge -> FDInstance OvertonFD ())
specify s t edge = case (debug ("overton-specify("++(show edge)++")") edge) of
  EGEdge { egeCons = EGChannel, egeLinks = EGTypeData { intData=[i], boolData=[b] } } -> 
    ([(1000,b,True,do
      s <- getIntSpec i
      case s of
        Just ss -> return $ SpecResSpec ((),return (ss,Nothing))
        _ -> return SpecResNone
     )],[(1000,i,True,do
      s <- getBoolSpec b
      case s of
        Just ss -> return $ SpecResSpec ((),return (ss,Nothing))
        _ -> return SpecResNone
     )],[])
  _ -> s edge

-- process :: Mixin (EGEdge -> FDInstance OvertonFD ())