     if a === b { return true }
     if a != nil { return a!.isEqual(b) }
     return false
-  }
-  static var nextId = 1
-  static var nextIdSem = DispatchSemaphore(value: 1)
-  static func next$UID() -> Int {
-    nextIdSem.wait()
-    let id = nextId
-    nextId += 1
-    nextIdSem.signal()
-    return id
   }
 }
 public class Reference<T> {

  func hasOwnProperty(_ o: FObject) -> Bool
  func clearProperty(_ o: FObject)
}

extension PropertyInfo {
  public func toJSON(outputter: Outputter, out: inout String, value: Any?) {

  var sub: Subscription?
}

public protocol PropertyInfo: Axiom, SlotGetterAxiom, SlotSetterAxiom, GetterAxiom, SetterAxiom, Expr {
  var classInfo: ClassInfo { get }
  var transient: Bool { get }
  var label: String { get }
