 
 /// Abstract interface to issuing announcements for a stream of changes over time.
 ///
-protocol Announcable: class {
+protocol Announcable {
 
   /// The type of anounced values.
   ///

class Changing<Value>: Observable {
  typealias ObservedValue = Value

  private let retainedObserved: AnyObject         // This is to keep the observed object alive.
  fileprivate var accumulator:      Value             // Encapsulated accumulator value
  private var changes:          Changes<Value>    // Stream of accumulator changes

  /// Constructs an accumulator with the given initial value, which is fed by an observed object by applying an
  /// accumulation function to the current accumulator value and the observed change to determine the new accumulator

// MARK: LeftRight

final class LeftRight {
  let left:  Any
  let right: Any
  init(left: Any, right: Any) { self.left = left; self.right = right }
}


